Cod sursa(job #610623)

Utilizator stefan.friptuPetru Stefan Friptu stefan.friptu Data 28 august 2011 12:42:20
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<cstdio>
#include<math.h>
#include<algorithm>

#define eps 0.00000000000001
#define inf 2000000001

using namespace std;

struct TRAPEZ
{
	int x;
	int y;
};

TRAPEZ p[1005];

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

double pante[500005];
int cnt2,i,j,n,aux1,aux2,sol,cnt;

int main()
{
	freopen("trapez.in","r",stdin);
	freopen("trapez.out","w",stdout);
	scanf("%d",&n);
	for(i=1;i<=n;i++)
		{
			scanf("%d%d",&aux1,&aux2);
			p[i].x=aux1;p[i].y=aux2;
		}
	
	for(i=1;i<=n;i++)
		for(j=i+1;j<=n;j++)
			pante[++cnt]=panta(p[i],p[j]);
	
	sort(pante+1, pante+cnt+1);

	for(i=1;i<cnt;i++)
		if(pante[i+1]-pante[i]<eps)
			cnt2++;
		else
			{
				sol=sol+cnt2*(cnt2+1)/2;
				cnt2=0;
			}
	printf("%d\n",sol);
	return 0;
}