Cod sursa(job #772745)

Utilizator alex_ovidiunituAlex Ovidiu Nitu alex_ovidiunitu Data 30 iulie 2012 17:31:57
Problema Triang Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include<iostream>
#include<cmath>
#include<fstream>
#include<algorithm>
#define Error 0.0001
using namespace std;
struct punct{double x,y;};
punct a[1600];
int n,sol;
int cmp(punct A, punct B)
{
	if (A.x<B.x)
		return 1;
	if (A.x==B.x)
		if (A.y<B.y)
			return 1;
	return 0;
}
double dist (punct a, punct b)
{
	return  sqrt( (a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}

int main(void)
{
	fstream f,g;
	f.open("triang.in",ios::in);
	g.open("triang.out",ios::out);
	f>>n;
	int i,j;
	for (i=1;i<=n;i++)
		f>>a[i].x>>a[i].y;
	sort(a+1,a+1+n,cmp);
	for (i=1;i<=n-2;i++)
		for (j=i+1;j<=n-1;j++)
		{
			double l1=dist(a[i],a[j]),l2,l3;
			int st=j+1,dr=n,mij;
			while (st<=dr)
			{
				mij=(st+dr)/2;
				l2=dist(a[i],a[mij]);
				l3=dist(a[j],a[mij]);
				if (abs(l2-l3)<Error)
					if (abs(l1-l2)<Error)
					{
						sol++;
						break ;
					}
				if (l2<l1)
					st=mij;
				else
					dr=mij;
			}
		}
	g<<sol;
}