Cod sursa(job #497333)

Utilizator drywaterLazar Vlad drywater Data 2 noiembrie 2010 10:11:58
Problema Trapez Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <stdio.h>
#include <algorithm>
using namespace std;
FILE *f=fopen("trapez.in","r"),*g=fopen("trapez.out","w");
int n,i,j,k,sol;
struct punct{int x;int y;};
struct dreapta{int dx;int dy;};
punct a[1001];
dreapta z[1000001];
int cmp(dreapta x,dreapta y)
{	return (x.dx*y.dy>x.dy*y.dx);}
int main(void)
{
	fscanf(f,"%d",&n);
	k=0;
	for (i=1;i<=n;i++)
	{
		fscanf(f,"%d%d",&a[i].x,&a[i].y);
		for (j=1;j<i;j++)
		{
			z[++k].dx=a[i].x-a[j].x;
			z[k].dy=a[i].y-a[j].y;
		}
	}
	sort(z+1,z+k+1,cmp);
	i=1;
	while (i<k)
	{
		int c=1;
		while (z[i].dx*z[i+1].dy==z[i+1].dx*z[i].dy && i<k)
			{i++; c++;}
		sol+=c*(c-1)/2;
		if (c==1) i++;
	}
	fprintf(g,"%d\n",sol);
	return 0;
}