Cod sursa(job #416429)

Utilizator AndreiDDiaconeasa Andrei AndreiD Data 12 martie 2010 19:21:47
Problema Patrate 3 Scor 35
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
#include <cstdio>
#include <cmath>
#include <algorithm>

using namespace std;

#define file_in "patrate3.in"
#define file_out "patrate3.out"

#define Nmax 1500

#define x first
#define y second
#define eps 0.0001

int n,nrp,i,j,k,l,ok;
double x[Nmax];
double y[Nmax];
double l1,l2,l3,l4,d;
pair<double,double> p[Nmax];


inline double dist(double x1,double y1,double x2, double y2)
{
	return ((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}			

int main()
{
	freopen(file_in,"r",stdin);
	freopen(file_out,"w",stdout);
		
	scanf("%d", &n);
	for (i=1;i<=n;++i)
		 scanf("%lf %lf", &p[i].x, &p[i].y);
	fclose(stdin);
	
	
	
	sort(p+1,p+n+1);
	
	nrp=0;
	for (i=1;i<=n-3;++i)
		 for (j=i+1;j<=n-2;++j)
			  for (k=j+1;k<=n-1;++k)
				{
					int ok=1;
					for (l=k+1;l<=n && ok;++l)
				    {
				        l1=dist(p[i].x,p[i].y,p[j].x,p[j].y);
				        l2=dist(p[j].x,p[j].y,p[l].x,p[l].y);
				        l4=dist(p[i].x,p[i].y,p[k].x,p[k].y);
				    	d=dist(p[i].x,p[i].y,p[l].x,p[l].y);
								  
				    if (fabs(l1-l2)<eps && fabs(l2-l4)<eps && fabs(l1-l4)<eps && fabs(d-2*l1)<eps)
				    {
					   nrp++;
					   ok=0;
				    }
				}
			  }
	
	printf("%d\n", nrp);
	fclose(stdout);
	
	return 0;
}