wa#6求助
查看原帖
wa#6求助
1063657
dzkkkkk楼主2024/9/26 14:29
#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
2024/9/26 14:29
加载中...