Cod sursa(job #704052)

Utilizator vladtarniceruVlad Tarniceru vladtarniceru Data 2 martie 2012 16:07:47
Problema Trapez Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <fstream>
#include <algorithm>
using namespace std;

int n,x[1010],y[1010],lung,sol;
double p[1000100];
inline double panta(int x1,int y1,int x2,int y2)
{
	return 1.0*((1.0*(x2-x1))/(1.0*(y2-y1)));
}

inline double modul(double a)
{
	if(a<0) return -a;
	return a;
}

inline bool cmp(double a,double b)
{
	return a<b;
}

int main()
{
	ifstream in("trapez.in");
	ofstream out("trapez.out");
	
	in>>n;
	for(int i=1;i<=n;++i)
	{
		in>>x[i]>>y[i];
		
		for(int j=i-1;j>=1;--j)
		{
			if(y[i]!=y[j])
				p[++lung]=panta(x[i],y[i],x[j],y[j]);
			else
				p[++lung]=10000000;
		}
	}
	
	sort(p+1,p+lung+1,cmp);
	
	for(int i=1;i<=lung;++i)
	{
		int sv=i,nr=0;
		while(modul(p[i]-p[sv])<0.00001 && i<=lung)
		{
			++i;
			++nr;
		}
		
		sol=sol+nr*(nr-1)/2;
	}
	
	out<<sol<<'\n';
	out.close();
	return 0;
}