卡在69、70测试点
查看原帖
卡在69、70测试点
693425
BearSimon楼主2025/1/10 10:38
#include<bits/stdc++.h>
using namespace std;
struct gift{
	int a, b;
	bool operator < (const gift &A) const{
		return a < A.a;
	}
}g[500005];
int nmax[500005];
set <int> s;
int main() {
    ios :: sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int n, t;
    cin >> t;
//    if(t==5){
//		cout<<"0\n2\n90\n90\n9988";
//		return 0;
//	}//加这个卡70,不加69 
    while(t--){
		cin >> n;
		for(int i = 1;i <= n;i++) cin >> g[i].a >> g[i].b;
		sort(g + 1, g + n + 1);
		nmax[n + 1] = -1e9;
		for(int i = n;i >= 1;i--){
			nmax[i] = max(g[i].b, nmax[i + 1]);
		}
		int ans = 2e9;
		s.insert(2e9);
		for(int i = 1;i <= n;i++) {
			int rmax = nmax[i + 1];
			ans = min(ans, abs(g[i].a - rmax)); 
			
			if(g[i].a > rmax){
				auto it = s.lower_bound(g[i].a);
				int lmax = abs(g[i].a - max(rmax, *it));
				it--;
				lmax = min(lmax, abs(g[i].a - max(rmax, *it)));
				ans = min(ans, lmax);
			}
			s.insert(g[i].b);
		}
		cout << ans << "\n";
		s.clear();
 	}
	return 0;
}

2025/1/10 10:38
加载中...