Cod sursa(job #504877)

Utilizator marta_diannaFII Filimon Marta Diana marta_dianna Data 29 noiembrie 2010 11:55:13
Problema Trapez Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<fstream>
#include<algorithm>
#define NMAX 1004
#define INF 2000000002
using namespace std;

ifstream f("trapez.in");
ofstream g("trapez.out");

struct punct{int x, y;} a[NMAX];

int n, m;
long long pos;
double p[NMAX*NMAX];

void pante()
{
	int A, B;
	double aa, bb;
	for (A=1; A<n; ++A)
		for (B=A+1; B<=n; ++B)
		{
			m++;
			aa=a[A].y-a[B].y;
			bb=a[A].x-a[B].x;
			if (bb==0) p[m]=INF;
			else p[m]=aa/bb;
		}
}
	
void citeste()
{
	int i;
	f>>n;
	for (i=1; i<=n; ++i) f>>a[i].x>>a[i].y;
	pante();
}

void cauta()
{
	int i;
	long long nr=1;
	for (i=2; i<=m; ++i)
		if (abs(p[i]-p[i-1])<=0.000000000000001) ++nr;
		else 
		{
			if (nr>1) pos+=nr*(nr-1)/2;
			nr=1;
		}
	if (nr>1) pos+=nr*(nr-1)/2;
}

int main()
{
	citeste();
	sort(p+1, p+m+1);
	cauta();
	g<<pos<<"\n";
	f.close();
	g.close();
	return 0;
}