Cod sursa(job #516667)

Utilizator angelicheartMicu Ana angelicheart Data 25 decembrie 2010 15:31:46
Problema Trapez Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>
using namespace std;

struct panta {int x,y;} v[1<<20],a[1<<10];
int n,m;

ifstream in("trapez.in");
ofstream out("trapez.out");

inline bool cmp(panta a,panta b)
{
	return (long long)a.x*b.y<(long long)a.y*b.x;
}

inline bool egal(panta a,panta b)
{
	return (long long)a.x*b.y==(long long)a.y*b.x;
}

int main()
{
	int i,j;
	long long nr=0;
	in>>n;
	for (i=1;i<=n;i++)
		in>>a[i].x>>a[i].y;
	for (i=1;i<n;i++)
		for (j=i+1;j<=n;j++)
		{
			v[++m].x=a[i].y-a[j].y;
			v[m].y=a[i].x-a[j].x;
			if (!v[m].x)
			{
				nr++;
				m--;
			}
		}
	nr=(long long)nr*(nr-1)/2;
	sort(v+1,v+m+i,cmp);
	for (i=2,n=1;i<=m;i++,n++)
		if (!egal(v[i],v[i-1]))
		{
			nr+=(long long)n*(n-1)/2;
			n=0;
		}
	nr+=(long long)n*(n-1)/2;
	out<<nr<<"\n";
	return 0;
}