Cod sursa(job #472277)

Utilizator mihai995mihai995 mihai995 Data 23 iulie 2010 17:27:24
Problema Trapez Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <fstream>
using namespace std;

struct segm{int a,b;};
segm v[1<<19];
int a[1<<10],b[1<<10];

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

inline bool tg(segm a,segm b)
{
	return (long long)a.a*b.b==(long long)a.b*b.a;
}

bool comp(segm a,segm b)
{
	return (long long)a.a*b.b<(long long)a.b*b.a;
}

int main()
{
	int n,i,j,k=0,q=0;
	long long nr=0;
	in>>n;
	for (i=1;i<=n;i++)
	{
		in>>a[i]>>b[i];
		for (j=1;j<i;j++)
		{
			if (b[i]==b[j])
			{
				q++;
				continue;
			}
			v[++k].a=a[i]-a[j];
			v[k].b=b[i]-b[j];
		}
	}
	sort(v+1,v+k+1,comp);
	for (i=1;i<k;i++)
		for (j=i+1;tg(v[i],v[j]) && j<=k;j++,nr++);
	nr+=(long long)q*(q-1)/2;
	out<<nr<<"\n";
	return 0;
}