Cod sursa(job #476952)

Utilizator c_adelinaCristescu Adelina c_adelina Data 12 august 2010 20:30:13
Problema Trapez Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <cstdio>
#include <algorithm>
using namespace std;

int mod(int x)
{//if (x<0) return -x;
return x;}

struct nod
{int a;int b;} dr[1000002];

int cmp(const nod &x,const nod &y)
{ return (double)x.a/x.b<(double)y.a/y.b;}

int main()
{
	int n,i,j,nr=0,ox[1002],oy[1002],sol;
	freopen("trapez.in","r",stdin);
	freopen("trapez.out","w",stdout);
	scanf("%d",&n);
	for (i=1;i<=n;++i)
	{
		scanf("%d %d",&ox[i],&oy[i]);
		for (j=1;j<i;++j)
			++nr,dr[nr].a=mod(oy[i]-oy[j]),dr[nr].b=mod(ox[i]-ox[j]);
	}
	sort(dr+1,dr+nr+1,cmp);
	for (i=2;i<=nr;++i)
	{n=0;
		while ((dr[i].a*dr[i-1].b==dr[i].b*dr[i-1].a) && (i<=nr)) ++i,++n;
		if (n) sol+=(n*(n+1))/2;
	}
	printf("%d",sol);
		return 0;}