Cod sursa(job #610543)

Utilizator smaraldaSmaranda Dinu smaralda Data 27 august 2011 22:05:22
Problema Trapez Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
#define eps 0.00000000000001
#define inf 10000000
struct POINT { int x,y; };
POINT p[1000010];

double panta ( POINT P1, POINT P2)
{
	if(P1.x==P2.x)
		return inf;
	return (double)(P2.y-P1.y)/(P2.x-P1.x);
}


int main()
{
	freopen("trapez.in","r",stdin);
	freopen("trapez.out","w",stdout);
	int nm,i,j,n,t1,rez,num,t2;
	double pante[1010];
	scanf("%d",&n);
	for(i=1;i<=n;i++)
		{
			scanf("%d%d",&t1,&t2);
			p[i].x=t1; 
			p[i].y=t2;
		}
	num=0;
	for(i=1;i<=n;i++)
		for(j=i+1;j<=n;j++)
			pante[++num]=panta(p[i],p[j]);
	
	sort(pante+1, pante+num+1);
	nm=rez=0;
	for(i=1;i<num;i++)
		if(pante[i+1]-pante[i]<eps)
			nm++;
		else
			{
				rez=rez+nm*(nm+1)/2;
				nm=0;
			}
	printf("%d\n",rez);
	return 0;
}