#include<bits/stdc++.h>
using namespace std;
map<long long, long long> t;
long long n, m;
const long long mn = 4;
inline long long query(long long l, long long r, long long p = 1, long long pl = 1, long long pr = mn) {
// printf("que%d~%d,p=%d,lp=%d,rp=%d;\n", l, r, p, pl, pr);
if (pl > r || pr < l)return 0;
if (l <= pl && pr <= r) {
// cout << pl << ' ' << pr << ' ' << t[p] << endl;
return t[p];
}
if( pl > pr) return 0;
long long m = (pl + pr) >> 1;
return query(l, r, p << 1, pl, m) +
query(l, r, p << 1 | 1, m + 1, pr);
}
inline long long ins(long long l, long long r, long long p = 1, long long pl = 1, long long pr = mn) {
if(t[p] == (pr - pl + 1)) return t[p];
// printf("ins%d~%d,p=%d,lp=%d,rp=%d;\n", l, r, p, pl, pr);
if (pl > r || pr < l)return t[p];
if (l <= pl && pr <= r) {
t[p] = pr - pl + 1;
return t[p];
}
if(pl == pr) return t[p];
long long m = (pl + pr) >> 1;
t[p] = ins(l, r, p << 1, pl, m) +
ins(l, r, p << 1 | 1, m + 1, pr);
// if(p == 1)cout << endl << query(1,mn) << endl;
}
int main() {
// freopen("interval.in", "r", stdin);
// freopen("interval.out", "w", stdout);
t.clear();
cin >> n >> m;
long long l, r, tl, tr;
cin >> l >> r;
bool flag = true;
while (--n) {
if (m == 0 && flag) {
if (l <= r)ins(l, r);
flag = false;
}
cin >> tl >> tr;
if (l > r) {
l = tl;
r = tr;
}
if (m) {
l = max(tl, l);
r = min(tr, r);
m--;
} else ins(tl, tr);
}
cout << query(1, mn);
return 0;
}
/*
3 1
1 2
2 3
3 4
*/
你RE标签搞CE干啥
因为他脑子CE了QWQ
sorry我的问题,没配置bitsstdc++, 你的ins可能会没有返回值