Cod sursa(job #307923)

Utilizator Bogdan_tmmTirca Bogdan Bogdan_tmm Data 25 aprilie 2009 16:19:40
Problema Trapez Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include<iostream>
#include<stdio.h>
#include<vector>
#include<algorithm>
#define ll long long
#define mp make_pair
using namespace std;
ll x,y,nr;
int n,i,j;
typedef pair <ll,ll> p;
vector <p> a,b;
inline int cmp(p x,p y)
{
	return 1LL*x.first*y.second<1LL*x.second*y.first;
}
inline int comp(p x,p y)
{
	ll n1,n2;
	if(!x.second)
		n1=0;
	else
		if(!x.first)
			n1=132432131;
		else
			n1=1312;
	if(!y.second)
		n2=0;
	else
		if(!y.first)
			n2=132432131;
		else
			n2=1312;
	if(n1==n2&&n2==1312&&1LL*x.first*y.second==1LL*x.second*y.first)
		return 1;
	if(n1!=1312&&n1==n2)
		return 1;
	return 0;
}
int main()
{
	freopen("trapez.in","r",stdin);
	freopen("trapez.out","w",stdout);
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%lld%lld",&x,&y);
		a.push_back(mp(x,y));
	}
	for(i=0;i<n;i++)
		for(j=i+1;j<n;j++)
		{
			ll m=a[i].first-a[j].first;
			ll n=a[i].second-a[j].second;
			b.push_back(mp(m,n));
		}
	sort(b.begin(),b.end(),cmp);
	for(int q=1,DIM=b.size();q<DIM;q++)
		if(comp(b[q],b[q-1]))
			nr++;
	printf("%lld\n",nr);
	return 0;
}