Cod sursa(job #491456)

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

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

struct PUNCT
{
	int x,y;
};

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

vector<float> c;
vector<float>::iterator it;

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

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++)
			c.push_back(panta(p[i], p[j]));
		
	sort(c.begin(), c.end());
	
	for(it = c.begin(); it!=c.end(); ++it)
		cout<<*it<<' ';
	
	it = c.begin();
	pc = *it;
	num = 1;
	for(++it; it!=c.end(); ++it)
		if(abs(pc - *it) <= EPS)
			++num;
		else
		{
			pc = *it;
			s += num * (num - 1) / 2;
			num = 1;
		}
	
	out<< s;
	
	return 0;
}