Cod sursa(job #383594)

Utilizator ionutz32Ilie Ionut ionutz32 Data 17 ianuarie 2010 09:21:08
Problema Trapez Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <stdio.h>
struct punct
{
	int x,y;
};
punct v[1005];
int n,i,a[1005][1005],j,ii,jj,b[1005][1005],x,y,aux,nr1,nr2;
long long sol;
int main()
{
	freopen("trapez.in","r",stdin);
	freopen("trapez.out","w",stdout);
	scanf("%d",&n);
	for (i=1;i<=n;++i)
		scanf("%d %d",&v[i].x,&v[i].y);
	for (i=1;i<n;++i)
		for (j=i+1;j<=n;++j)
		{
			if (v[i].y>v[j].y)
			{
				ii=j;
				jj=i;
			}
			else
			{
				ii=i;
				jj=j;
			}
			if (v[jj].x>v[ii].x)
			{
				x=v[jj].x-v[ii].x;
				y=v[jj].y-v[ii].y;
				nr1=x;
				nr2=y;
				while (nr2)
				{
					aux=nr1;
					nr1=nr2;
					nr2=aux%nr2;
				}
				x=x/nr1;
				y=y/nr1;
				sol+=a[x][y];
				a[x][y]++;
			}
			else
			{
				x=v[ii].x-v[jj].x;
				y=v[jj].y-v[ii].y;
				nr1=x;
				nr2=y;
				while (nr2)
				{
					aux=nr1;
					nr1=nr2;
					nr2=aux%nr2;
				}
				x=x/nr1;
				y=y/nr1;
				sol+=b[x][y];
				b[x][y]++;
			}
		}
	printf("%lld",sol);
	return 0;
}