Cod sursa(job #1081324)

Utilizator The_DisturbedBungiu Alexandru The_Disturbed Data 13 ianuarie 2014 15:27:31
Problema Trapez Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<stdio.h>
#include<algorithm>
using namespace std;
int p[2][1013],m,n,i,j,k,nr;
double v[1000013];
inline double panta(int x1,int y1, int x2, int y2)
{
	if(x1==x2)return 1<<30;
	return(double)((double)(y2-y1)/(double)(x2-x1));
}
inline bool eq(double a, double b)
{
	double x=(a>b?a-b:b-a);
	return x<0.0000001;
}
int main()
{
	freopen("trapez.in","r",stdin);
	freopen("trapez.out","w",stdout);
	scanf("%d",&n);
	for(i=0;i<n;++i)scanf("%d%d",&p[0][i],&p[1][i]);
	m=0;
	for(i=0;i<n-1;++i)
		for(j=i+1;j<n;++j)
			v[m++]=panta(p[0][i],p[1][i],p[0][j],p[1][j]);
	sort(v,v+m);
	v[m]=-1;
	i=nr=0;
	while(i<m)
	{
		j=i;
		while(eq(v[j],v[j+1]))++j;
		k=j-i+1;
		nr=nr+(k-1)*k/2;
		i=j+1;
	}
	printf("%d",nr);
	return 0;
}