Cod sursa(job #491454)

Utilizator gabipurcaruGabi Purcaru gabipurcaru Data 11 octombrie 2010 13:26:26
Problema Trapez Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
// infoarena: problema/trapez //
#include <fstream>
#include <map>
#include <cmath>
#define INF 1<<30
#define MAXN 1010
using namespace std;

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

struct PUNCT
{
	int x,y;
};

double panta(PUNCT a, PUNCT b)
{
	if(a.y == b.y)
		return INF;
	return (a.x-b.x)/(a.y-b.y);
}

map<double,int> m;
map<double,int>::iterator it;

PUNCT p[MAXN];
int n,i,j,s;

int main()
{
	in>>n;
	for(i=1; i<=n; i++)
		in>>p[i].x>>p[i].y;
	
	for(i=1; i<n; i++)
		for(j=i+1; j<=n; j++)
			if(panta(p[i], p[j]))
				++ m[panta(p[i], p[j])];
			else
				m[panta(p[i], p[j])] = 1;
		
	for(it=m.begin(); it!=m.end(); ++it)
		s += it->second * (it->second-1) / 2;
	
	out<< s;
	
	return 0;
}