Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

625MS

Posted by donkeyinacm at 2010-03-05 11:29:41 on Problem 2002
#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:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator