小HY的四元组
4.7 比赛T1,然而这题爆零了
其实很简单的...其实哈希都不用
所以首先记录每组的差值,按其sort一下再暴力找即可
1 #include<cstdio> 2 #include<iostream> 3 #include<algorithm> 4 using namespace std; 5 int n,minv,maxv; 6 long long x,y,z,t; 7 struct ty{long long a,b,c; int id;}p[500005]; 8 bool cmp(ty x,ty y){if(x.a!=y.a) return x.a<y.a;if(x.b!=y.b) return x.b<y.b;if(x.c!=y.c) return x.c<y.c;return x.id<y.id;} 9 int main(){ 10 cin>>n; 11 for(int i=1;i<=n;i++) 12 scanf("%lld%lld%lld%lld",&x,&y,&z,&t), 13 p[i].a=y-x,p[i].b=z-y,p[i].c=t-z,p[i].id=i; 14 sort(p+1,p+n+1,cmp); 15 x=p[1].a;y=p[1].b;z=p[1].c; 16 minv=0x3f3f3f3f; 17 for(int i=2;i<=n;i++) 18 if(p[i].a!=x||p[i].b!=y||p[i].c!=z) 19 x=p[i].a,y=p[i].b,z=p[i].c; 20 else minv=min(minv,p[i].id-p[i-1].id),maxv=max(maxv,p[i].id+p[i-1].id); 21 cout<<minv<<' '<<maxv<<endl; 22 return 0; 23 }