Cod sursa(job #688980)

Utilizator lily3Moldovan Liliana lily3 Data 23 februarie 2012 23:53:09
Problema Triang Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include<fstream>
#include<algorithm>
#include<cmath>
using namespace std;

int i,j,n,rez=0;
pair<double, double> a[2010];
double x,y,val;
int gasit(int x,int y)
{
	int st=1,dr=n,mij;
	mij=(st+dr)/2;
	while(st<=dr)
	{
		mij=(st+dr)/2;
		if(a[mij].first==x&&a[mij].second==y)
			return 1;
		if(a[mij].first<x)
			st=mij+1;
		else
			dr=mij-1;
	}
	return 0;
}
int main()
{
	FILE *f=fopen("triang.in","r");
	FILE *g=fopen("triang.out","w");
	fscanf(f,"%d",&n);
	for(i=1;i<=n;++i)
		fscanf(f,"%lf%lf",&a[i].first,&a[i].second);
	sort(a+1,a+n+1);
	double p=3.00;
	val=sqrt(p)*0.5;
	for(i=1;i<=n;++i)
		for(j=i+1;j<=n;++j)
		{
			x=a[i].first+(a[j].first-a[i].first)*0.5-(a[j].second-a[i].second)*val;
			y=a[i].second+(a[j].first-a[i].first)*val-(a[j].second-a[i].second)*0.5;
			if(gasit(x,y))
				++rez;
			x=a[i].first+(a[j].first-a[i].first)*0.5+(a[j].second-a[i].second)*val;
			y=a[i].second-(a[j].first-a[i].first)*val+(a[j].second-a[i].second)*0.5;
			if(gasit(x,y))
				++rez;
		}
		fprintf(g,"%d\n",rez);
	return 0;
}