| ||||||||||
| 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 | |||||||||
难道是rp?什么数据都能通过就是WA!#include<stdio.h>
#include<math.h>
#include<iostream>
using namespace std;
struct node
{
int x;
int y;
};
node a[1001];
int cmp(const void* n1,const void* n2)
{
if((*(node*)n1).x>(*(node*)n2).x||((*(node*)n1).x==(*(node*)n2).x&&(*(node*)n1).y>(*(node*)n2).y))return 1;
if(((*(node*)n1).x==(*(node*)n2).x&&(*(node*)n1).y==(*(node*)n2).y))return 0;
return -1;
}
int BinSearch(node&K,int n)
{
int low=0,high=n-1,mid;
while(low<=high){
mid=(low+high)/2;
if(a[mid].x==K.x&&a[mid].y==K.y) return mid;
if(a[mid].x>K.x||a[mid].x==K.x&&a[mid].y>K.y)
high=mid-1;
else
low=mid+1;
}
return -1;
}
void main()
{
int n,i,j,k;
node nod;
scanf("%d",&n);
while(n)
{
for(i=0;i<n;i++)
scanf("%d%d",&a[i].x,&a[i].y);
qsort(a,n,sizeof(a[0]),cmp);
k=0;
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
{
if((a[i].x+a[j].x)%2!=(a[i].y+a[j].y)%2)continue;
nod.x=(a[i].x+a[j].x-a[i].y+a[j].y)/2;
nod.y=(a[i].y+a[j].y+a[i].x-a[j].x)/2;
if(BinSearch(nod,n)==-1)continue;
nod.x=(a[i].x+a[j].x-a[j].y+a[i].y)/2;
nod.y=(a[i].y+a[j].y+a[j].x-a[i].x)/2;
if(BinSearch(nod,n)==-1)continue;
k++;
}
cout<<k/2<<endl;
scanf("%d",&n);
}
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator