样例输出901 299,怎么办?
查看原帖
样例输出901 299,怎么办?
1097884
shuhao楼主2025/6/14 11:26

为森么样例输出901和299? 蒟蒻求助~

#include <iostream>
using namespace std;

const int MAXN = 1e6 + 5;
 
int dif[MAXN], ds[MAXN]; // different, different_sum

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;
}

2025/6/14 11:26
加载中...