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 |
625MS#include <iostream> #include <cmath> using namespace std; #define MAXN 1005 #define INF 20005 #define MAXH 999999 #define esp 1e-10 int n,x2,y2,x4,y4,res; struct point { int x,y; point *next; }; point P[MAXN]; point *hash[MAXH]; int cmp(const void *a,const void *b) { if(static_cast<const point*>(a)->x==static_cast<const point*>(b)->x) return static_cast<const point*>(a)->y-static_cast<const point*>(b)->y; return static_cast<const point*>(a)->x-static_cast<const point*>(b)->x; } bool exist(int x,int y) { bool b[2]={false}; int hv=(x*x+y*y)%MAXH; point *p=hash[hv]; while(p!=NULL) if(p->x==x&&p->y==y) return true; else p=p->next; return false; } int main() { //freopen("c:/aaa.txt","r",stdin); int i,j; while(scanf("%d",&n)&&n) { for(i=0;i<MAXH;i++) hash[i]=NULL; res=0; for(i=0;i<n;i++) { scanf("%d%d",&P[i].x,&P[i].y); int hv=(P[i].x*P[i].x+P[i].y*P[i].y)%MAXH; point *p=new point(); p->next=hash[hv]; p->x=P[i].x; p->y=P[i].y; hash[hv]=p; } qsort(P,n,sizeof(P[0]),cmp); for(i=0;i<n;i++) { for(j=i+1;j<n;j++) if(P[j].y>P[i].y) { if(P[j].x==P[i].x&&P[j].y-P[i].y==1 || P[j].y==P[i].y&&P[j].x-P[i].x==1) continue; int x1=P[i].x; int y1=P[i].y; int x3=P[j].x; int y3=P[j].y; x2=(x1+x3+y3-y1)/2; y2=(y1+y3+x1-x3)/2; x4=(x1+x3-y3+y1)/2; y4=(y1+y3-x1+x3)/2; double len1=((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1))*2; double len2=((x3-x1)*(x3-x1)+(y3-y1)*(y3-y1)); if(fabs(len1-len2)>esp) continue; if(exist(x2,y2)&&exist(x4,y4)) { // printf("1 x1:%d y1:%d x2:%d y2:%d x3:%d y3:%d x4:%d y4:%d\n",x1,y1,x2,y2,x3,y3,x4,y4); res++; } } } printf("%d\n",res); } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator