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 }