92pts,WA#7
查看原帖
92pts,WA#7
661913
liwenxi1145144444楼主2024/7/10 08:47
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n;
struct node{
	int x,id;
}a[50005];
bool cmp(node a,node b){
	return a.x<b.x;
}
unordered_map<int,int> vis;
signed main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i].x>>a[i].id;
		vis[a[i].id]=1;
	}
	int s=vis.size();
	vis.clear();
	sort(a+1,a+n+1,cmp);
	int l=1,r=1,sum=0,minn=INT_MAX;
	while(l<=r&&r<=n){
		if(sum==s){
			minn=min(minn,a[r-1].x-a[l].x);
			vis[a[l].id]--;
			if(vis[a[l].id]==0){
				sum--;
			}
			l++;
		}else{
			if(!vis[a[r].id]){
				sum++;
			}
			vis[a[r].id]++;
			r++;
		}
	}
	if(sum==s){
		minn=min(minn,a[r-1].x-a[l].x);
	}
	cout<<minn;
	return 0;
}

附上数据

50
369 957
199 328
785 17
28 863
920 527
457 282
43 2
803 2
23 847
316 730
336 15
737 2
70 10
230 20
794 92
927 20
691 15
325 10
650 10
68 2
541 506
568 15
531 337
427 2
930 997
538 10
387 858
493 3
764 2
384 10
778 20
430 125
60 20
173 14
863 171
394 306
59 874
136 4
124 3
414 926
168 15
916 981
12 15
887 314
363 2
422 2
212 11
371 85
783 3
374 2
907

我的代码输出

918
2024/7/10 08:47
加载中...