Cod sursa(job #792812)

Utilizator alexalghisiAlghisi Alessandro Paolo alexalghisi Data 30 septembrie 2012 15:00:53
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <vector>
#define mp make_pair
#define f first
#define s second
using namespace std;

vector<pair<int,int > > v; 
vector<double> pante;

int main()
{	
	int a,n,b;
	freopen("trapez.in","r", stdin);
	freopen("trapez.out","w", stdout);
	scanf("%d",&n);

	for(int i=1;i<=n;i++)
	{
		scanf("%d %d",&a,&b);
		v.push_back(mp(a,b));
	}
	for(int i=0;i<v.size();i++)
		for(int j=i+1;j<v.size();j++)
			if(i!=j)
			{
				if(v[i].f!=v[j].f)
					pante.push_back((double)(v[j].s-v[i].s)/(v[j].f-v[i].f));
					else
						pante.push_back(double(1<<30));
			}
	sort(pante.begin(),pante.end());
	long long S=0;
	int nr=0;
	
	for(int i=1;i<pante.size();i++)
	{
		if(pante[i]==pante[i-1])
			++nr;
		else
		{
			if(nr>=2)
				S+=nr*(nr-1)/2;
			nr=1;
		}
	}
	printf("%lld",S);
	return 0;
}