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 |
大牛帮忙看看,wrong answer 十几次了(数据对了)#include<stdio.h> #include<algorithm> #define INF 2000000000 using namespace std; struct point { int x,y; int d,X1,X2; }; point a[1001]; point z[500001]; bool cmp(const point&a,const point&b) { if(a.x != b.x) return a.x < b.x; // if(a.y != b.y) return a.y < b.y; /* if(a.d != b.d) return a.d < b.d; if(a.X1!= b.X1) return a.X1 < b.X1; return a.X2 < b.X2;*/ } int dis(point a,point b) { return ((a.x - b.x)*(a.x - b.x) + (a.y - b.y)*(a.y - b.y)); } int main() { int i,j,k,n,ans,count,t; while(scanf("%d",&n)&&n) //while(scanf("%d",&n)!=EOF) { k = 0; for(i = 1;i <= n;i++) { scanf("%d%d",&a[i].x,&a[i].y); for(j = 1;j < i;j++) { z[++k].x = a[i].x + a[j].x; z[k].y = a[i].y + a[j].y; z[k].d = dis(a[i],a[j]); if(a[i].x == a[j].x) { z[k].X1 = INF; z[k].X2 = 0; } else { z[k].X1 = a[j].y - a[i].y; z[k].X2 = a[j].x - a[i].x; } } } sort(z + 1,z + k + 1,cmp); for(i = 1;i <= k;i++) printf("%d %d %d %d %d\n",z[i].x,z[i].y,z[i].d,z[i].X1,z[i].X2); i = 1;ans = 0; while(i < k) { count = 1; for(j = i + 1;j <=k ;j++) { if(z[i].x == z[j].x&&z[i].y == z[j].y&&z[i].d == z[j].d &&z[i].X1*z[j].X1 + z[i].X2*z[j].X2 == 0) count++; else break; } ans += count*(count - 1)/2; i = j; } printf("%d\n",ans); } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator