首发题解!
2025-07-21 16:39:10
发布于:浙江
6阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
struct node{
int x,id;
}a[50010];
map<int,int> m;
map<int,int> m1;
bool cmp(node x,node y){
return x.x < y.x;
}
int main(){
int n,pz = 0,minn = INT_MAX;
cin >> n;
for(int i = 1;i <= n;i++){
cin >> a[i].x >> a[i].id;
m[a[i].id]++;
}
sort(a + 1,a + 1 + n,cmp);
int l = 1,r = 1;
for(;r <= n;r++){
m1[a[r].id]++;
if(m1[a[r].id] == 1) pz++;
while(pz == m.size()){
minn = min(minn,(a[r].x - a[l].x));
m1[a[l].id]--;
if(m1[a[l].id] == 0) pz--;
l++;
}
}
cout << minn;
return 0;
}
这里空空如也
有帮助,赞一个