Cod sursa(job #809697)

Utilizator Vladinho97Iordan Vlad Vladinho97 Data 8 noiembrie 2012 20:49:47
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#define inf 2e31
#define eps 1e-14
#include<vector>
#include<fstream>
#include<algorithm>
using namespace std;
class Point
{
private:
	int x,y;
public:
	Point()
	{x=0;y=0;}
	void set(int a,int b)
	{
		x=a;
		y=b;
	}
	friend double panta(const Point &p1,const Point &p2)
	{
		if(p1.x==p2.x)
			return inf;
		else
			return ((double)p2.y-p1.y)/(p2.x-p1.x);
	}
};
int main()
{
	Point temp;
	vector <double> valori;
	vector <Point> p;
	int n,a,b,i,j;
	ifstream f("trapez.in");
	ofstream g("trapez.out");
	f>>n;
	for(i=1;i<=n;i++)
	{
		f>>a>>b;
		temp.set(a,b);
		p.push_back(temp);
	}
	double pan;
	for(i=0;i<=n-2;i++)
		for(j=i+1;j<=n-1;j++)
		{
			pan=panta(p[i],p[j]);
			valori.push_back(pan);
		}
	sort(valori.begin(),valori.end());
	long long nr=1,suma=0;
	valori.push_back(2*inf);
	for(i=0;i<valori.size()-1;++i)
	{
		if(valori[i+1]-valori[i]<eps)
			nr++;
		else
		{
			suma+=(nr*(nr-1)/2);
			nr=1;
		}
	}
	g<<suma;
	return 0;
}