Cod sursa(job #773080)

Utilizator alex_ovidiunituAlex Ovidiu Nitu alex_ovidiunitu Data 31 iulie 2012 21:52:28
Problema Triang Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include<iostream>
#include<cmath>
#include<fstream>
#include<algorithm>
using namespace std;
const double Error=0.001;
struct punct{double x,y;};
struct dr{double a,b,c;};
punct a[1600],M;
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;
}
void ec_dr(punct a, punct b, dr &ab)
{
	ab.a=b.y-a.y;
	ab.b=a.x-b.x;
	ab.c=a.x*a.y-a.x*b.y+a.y*b.x-a.y*a.x;
}
double fabs( double x)
{
	if (x<0)
		return -x;
	return x;
}
double dist_dr(punct a, dr d)
{
	return abs(d.a*a.x+d.b*a.y+d.c)/sqrt(d.a*d.a+d.b*d.b);
}
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,k;
	double rad=sqrt(3+0.0)/2,l1,m1,Dist,m2,l2,l3;
	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++)
			for (k=j+1;k<=n;k++)
			{
				l1=dist(a[i],a[j]);
				l2=dist(a[i],a[k]);
				l3=dist(a[j],a[k]);
				if (fabs(l1-l2)<=Error && fabs(l1-l3)<=Error && fabs(l3-l2)<=Error)
				{
					sol++;
					break;
				}
			}
	g<<sol;
}