Cod sursa(job #712727)

Utilizator noruIlies Norbert noru Data 13 martie 2012 19:02:29
Problema Trapez Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include<fstream>
#include<algorithm>
#include<cmath>
using namespace std;
ifstream f("trapez.in");
ofstream g("trapez.out");

int N,i,j,x[1001],y[1001],k=0,trapez=0,r=0;
float pante[1000001];
float lung[1000001];

void citire()
{
	f>>N;
	for (i=1;i<=N;i++)
		f>>x[i]>>y[i];
}

void panta()
{
	for (i=1;i<=N-1;i++)
		for (j=i+1;j<=N;j++)
		{
			if (x[i]==x[j]) pante[++k]=2100000000;
			else if (y[i]==y[j]) pante[++k]=0;
			else pante[++k]=(float)(y[j]-y[i])/(x[j]-x[i]);
			lung[k]=sqrt((float)(y[j]-y[i])*(y[j]-y[i])+(float)(x[j]-x[i])*(x[j]-x[i]));
		}
}
int gaos(int a)
{
	return a*(a-1)/2;
}

void caut()
{
	trapez=0;
	for (i=1;i<=k;i++)
	{
		j=i;
		while (pante[i]==pante[j]&&i<=k) 
		{
			r++;		
			i++;
		}
		i--;
		trapez+=gaos(r);
		r=0;
	}
}

int main()
{
	citire();
	panta();
	sort (pante+1,pante+k+1);
	caut();
	g<<trapez;
	return 0;
}