File tree Expand file tree Collapse file tree 1 file changed +45
-0
lines changed
Expand file tree Collapse file tree 1 file changed +45
-0
lines changed Original file line number Diff line number Diff line change 1+ ``` cpp
2+ #include < bits/stdc++.h>
3+ using namespace std ;
4+ using ll = long long ;
5+
6+ ll N, K;
7+ const ll MOD = 1e9 + 7 ;
8+ vector<pair<ll, int >> events;
9+ ll c[200001 ]{};
10+
11+ ll power (ll a, ll b) {
12+ if (b == 0) return 1;
13+ if (b == 1) return a % MOD;
14+ ll h = power(a, b >> 1);
15+ h = (h * h) % MOD;
16+ return (b & 1) ? h * a % MOD : h;
17+ }
18+
19+ int main() {
20+ cin.tie(0)->sync_with_stdio(0);
21+
22+ cin >> N >> K;
23+
24+ c[K] = 1;
25+ for (int x = 1; K + x <= N; x++) c[K + x] = c[K + x - 1] * (K + x) % MOD * power(x, MOD - 2) % MOD;
26+
27+ for (int i = 0, l, r; i < N; i++) {
28+ cin >> l >> r;
29+ events.emplace_back(l, 1);
30+ events.emplace_back(r + 1, -1);
31+ }
32+
33+ sort(events.begin(), events.end());
34+
35+ ll ans = 0, prev = MOD, cnt = 0;
36+ for (int i = 0; i < N * 2;) {
37+ ll prevCnt = cnt, cur = events[i].first;
38+ while (i < N * 2 && events[i].first == cur) cnt += events[i++].second;
39+ if (prev != MOD) ans = (ans + (cur - prev) * c[prevCnt]) % MOD;
40+ prev = cur;
41+ }
42+ cout << ans;
43+
44+ }
45+ ```
You can’t perform that action at this time.
0 commit comments