Cod sursa(job #305994)

Utilizator luk17Luca Bogdan luk17 Data 19 aprilie 2009 12:11:22
Problema Trapez Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include<stdio.h>
#include<stdlib.h>

#define NMAX 1001

int x[NMAX],y[NMAX],n;

struct dreapta
{
	int numitor,numarator;
};
dreapta m[NMAX*NMAX];


int cmp(const void* a,const void* b)
{
	dreapta x,y;
	x=*(dreapta*)a;
	y=*(dreapta*)b;

	if(x.numarator*y.numitor>x.numitor*y.numarator)
		return 1;
	else
		if(x.numarator*y.numitor<x.numitor*y.numarator)
			return -1;
		else
			return 0;
}

int main()
{
	int i,j,contor=0,lung=0;

	freopen("trapez.in","r",stdin);
	freopen("trapez.out","w",stdout);
	scanf("%d",&n);
	for(i=1;i<=n;i++)
		scanf("%d%d",&x[i],&y[i]);

	for(i=1;i<n;i++)
		for(j=i+1;j<=n;j++)
		{
			m[lung].numarator=x[i]-x[j];
			m[lung++].numitor=y[i]-y[j];
			//	printf("%d %d\n",m[i].numarator,m[i].numitor);
		}
		qsort(m,lung,sizeof(dreapta),cmp);


	for(i=0;i<lung-1;i++)
	{
		if(m[i].numarator*m[i+1].numitor==m[i].numitor*m[i+1].numarator)
		{
			contor++;
		//	printf("%d %d %d %d\n",m[i].numarator,m[i+1].numitor,m[i].numitor,m[i+1].numarator);
		}
	}
	printf("%d",contor);
	return 0;
}