Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
跪求变态测试数据让以下程序挂掉。。Source Code Problem: 2002 User: bingshen Memory: N/A Time: N/A Language: C++ Result: Wrong Answer Source Code #include<stdio.h> #include<vector> #include<algorithm> #define maxn 1000 using namespace std; struct point { int x; int y; }; point p[maxn+5]; vector<point>hash[maxn+5][maxn+5]; bool cmp(point a,point b) { if((a.y<b.y)||(a.y==b.y&&a.x<b.x)) return true; return false; } bool judge(int a,int b) { int i,x1,y1,x2,y2,x,y,px,py; bool k1=false,k2=false; x=p[a].y-p[b].y; y=p[b].x-p[a].x; px=x+p[a].x; py=y+p[a].y; x1=(x+p[a].x)%maxn; y1=(y+p[a].y)%maxn; if(x1<=0) x1=x1+maxn; if(y1<=0) y1=y1+maxn; for(i=0;i<hash[x1][y1].size();i++) { if(hash[x1][y1][i].x==px&&hash[x1][y1][i].y==py) { k1=true; break; } } px=x+p[b].x; py=y+p[b].y; x2=(x+p[b].x)%maxn; y2=(y+p[b].y)%maxn; if(x2<=0) x2=x2+maxn; if(y2<=0) y2=y2+maxn; for(i=0;i<hash[x2][y2].size();i++) { if(hash[x2][y2][i].x==px&&hash[x2][y2][i].y==py) { k2=true; break; } } if(k1&&k2) return true; return false; } void init() { int i,j; for(i=0;i<=maxn;i++) for(j=0;j<=maxn;j++) hash[i][j].clear(); } int main() { int i,j,n,x,y; while(scanf("%d",&n)!=EOF) { if(n==0) break; init(); for(i=1;i<=n;i++) { scanf("%d%d",&p[i].x,&p[i].y); x=p[i].x%maxn; y=p[i].y%maxn; if(x<=0) x=x+maxn; if(y<=0) y=y+maxn; hash[x][y].push_back(p[i]); } if(n<=3) { printf("3\n"); continue; } sort(p+1,p+1+n,cmp); int ans=0; for(i=1;i<=n;i++) for(j=i+1;j<=n;j++) { if(judge(i,j)) ans++; } printf("%d\n",ans/2); } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator