Cod sursa(job #530147)

Utilizator lily3Moldovan Liliana lily3 Data 6 februarie 2011 23:55:48
Problema Triang Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include<fstream.h>
#include<iomanip.h>
#include<math.h>
ofstream g("triang.out");

int i,j,n,m,nr=0;
struct tri
{
	float x,y;
};
tri a[1501],aux;
int rez(float xc,float yc)
{
	int st=1,dr=n,mij,ok=0;
	while(st<dr&&!ok)
	{
		mij=(st+dr)/2;
		if(a[mij].x==xc&&a[mij].y==yc)
			ok=1;
		else
		if(a[mij].x<xc)
			st=mij+1;
		else
			dr=mij-1;
	}
	if(ok)
		return 1;
	return 0;
}
	
void cauta(int i,int j)
{
	float xm,ym,xc,yc;
	float l;
	l=sqrt(pow((a[i].x-a[j].x),2)+pow((a[i].y-a[j].y),2));
	xm=(a[j].x-a[i].x)/2,ym=(a[j].y-a[j].x)/2;
	xc=xm;
	yc=sqrt(pow(l,2)-pow(l/2,2));
	if(rez(xc,yc))
		nr++;
	if(rez(xc,-yc))
		nr++;
}
int main()
{
	ifstream f("triang.in");
	
	f>>n;
	for(i=1;i<=n;i++)
		f>>a[i].x>>a[i].y;
	for(i=1;i<n;i++)
		for(j=i+1;j<=n;j++)
			if(a[i].x>a[j].x)
			{
				aux=a[i];
				a[i]=a[j];
				a[j]=aux;
			}
	for(i=1;i<n;i++)
		for(j=i+1;j<=n;j++)
			cauta(i,j);
		g<<nr;
	return 0;
}