为森么样例输出901和299?
蒟蒻求助~
#include <iostream>
using namespace std;
const int MAXN = 1e6 + 5;
int dif[MAXN], ds[MAXN];
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int n;
cin >> n;
int L = 2e9, R = -2e9;
for (int i = 1; i <= n; ++i) {
int l, r;
cin >> l >> r;
L = min(L, l);
R = max(R, r);
++dif[l]; --dif[r + 1];
}
for (int i = L; i <= R; ++i)
ds[i] = ds[i - 1] + dif[i];
int ans1 = -2e9, ans2 = -2e9;
int l = -1, r = -1;
for (int i = L; i <= R; ++i) {
if (ds[i] && !ds[i - 1]) {
l = i;
ans2 = max(ans2, int(r == -1 ? -2e9 : l - r));
}
else if (ds[i - 1]) {
r = i;
ans1 = max(ans1, r - l);
}
}
cout << ans1 << ' ' << ans2 << '\n';
return 0;
}