Cod sursa(job #443935)

Utilizator bog29Antohi Bogdan bog29 Data 18 aprilie 2010 22:14:06
Problema Trapez Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include<fstream>
#include<vector>
#define dmax 1004
using namespace std;
ifstream in("trapez.in");
ofstream out("trapez.out");

long long n,sol,crt=-1;
double u;

struct point
{	long long x;
	long long y;
}	p[dmax];

struct fr
{	long long n;
	long long m;
	double h;
}	f[dmax*dmax];


typedef int (*compfn)(const void *,const void *);

int sf(struct fr *a,struct fr *b)
{	if( a->h - b->h > 0)return 1;
	if( a->h - b->h < 0)return -1;
	return 0;
}	

int main()
{	long long i,j;
	in>>n;
	for(i=0;i<n;i++)
		in>>p[i].x>>p[i].y;
	in.close();	
	for(i=1;i<n;i++)
		for(j=0;j<i;j++)
		{	if(p[i].x - p[j].x == 0)
				u=1000;
			else u=( (double)p[i].y - (double)p[j].y) / (double)(p[i].x - (double)p[j].x);
			crt++;
			f[crt].h=u;
			f[crt].n=p[i].y - p[j].y;
			f[crt].m=p[i].x - p[j].x;
		}
	qsort( (void*)&f, crt+1, sizeof(struct fr), (compfn)sf);	
	for(i=0;i<crt-1;i++)
		if( f[i].n * f[i+1].m == f[i].m * f[i+1].n)
			sol++;
	out<<sol;
	out.close();
	return 0;
}