Cod sursa(job #693191)

Utilizator CBogdanCiobanu Bogdan CBogdan Data 27 februarie 2012 10:37:21
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include<cstdio>
#include<algorithm>
#include<utility>
using namespace std;

int n,i,j,x,y,y1,y2,x1,x2,a,b,dr,sol,crit(int,int);
pair<int,int> pct[1010];
double panta[1000010],tg1;

void read(),solve();

int main()
{
	read();
	solve();
	
	return 0;
}

void read()
{
	freopen("trapez.in","r",stdin);
	freopen("trapez.out","w",stdout);
	scanf("%d",&n);
	for(i=1;i<=n;i++)
	{
		scanf("%d%d",&x,&y);
		pct[i]=make_pair(x,y);
	}
}

void solve()
{
	for(i=1;i<=n;i++)
	{
		for(j=i+1;j<=n;j++)
		{
			x1=pct[i].first;
			y1=pct[i].second;
			x2=pct[j].first;
			y2=pct[j].second;
			a=y1-y2;b=x1-x2;
			if(b)
			{
				panta[++dr]=(double)a/b;
			}
			else
				panta[++dr]=800000010;
		}
	}
	sort(panta+1,panta+dr);
	tg1=panta[1];n=1;
	for(i=2;i<=dr;i++)
	{
		if(panta[i]-tg1<0.0000000000001)
		{
			n++;
			continue;
		}
		sol+=(n*(n-1))/2;
		n=1;
		tg1=panta[i];
	}
	printf("%d\n",sol);
}