#include<bits/stdc++.h>
using namespace std;
int sum,l,r,sum_1,ans=INT_MAX,n;
map<int,bool> judge;
map<int,bool> ma;
map<int,int> m;
struct node
{
int x;
int num;
};
bool cmp(node p,node q)
{
return p.x<q.x;
}
node a[50010];
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d%d",&a[i].x,&a[i].num);
if(!judge[a[i].num])
{
sum_1++;
judge[a[i].num]=true;
}
}
sort(a+1,a+1+n,cmp);
int i=1;
sum=sum+1;
m[a[i].num]++,ma[a[i].num]=true;
while(a[i].num==a[i+1].num)
i++;
l=i;
for(int j=i+1;j<=n;j++)
{
int u=a[j].num;
if(!ma[u])
{
r=j;
sum++;
m[u]++,ma[u]=true;
}
else
{
r=j;
++m[u];
while(m[a[l].num]>1)
{
l++;
m[a[l].num]--;
}
}
if(sum==sum_1)
ans=min(ans,a[r].x-a[l].x);
}
printf("%d",ans);
return 0;
}
输入25
764 3
783 2
60 2
369 3
691 3
427 5
384 3
422 2
28 2
212 1
650 3
568 4
493 3
336 2
794 5
927 2
363 3
916 5
887 5
387 1
737 2
541 1
173 3
430 5
778 1
正确输出146,我的输出184