Cod sursa(job #448361)

Utilizator ChallengeMurtaza Alexandru Challenge Data 3 mai 2010 16:45:19
Problema Trapez Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <fstream>
#include <vector>
#include <algorithm>
#include <math.h>

using namespace std;

const char InFile[]="trapez.in";
const char OutFile[]="trapez.out";
const int MaxN=1005;
const double EPS=1e-10;

struct POINT
{
	int x,y;
};

int fcmp(double a, double b)
{
	if((a-b)<=EPS)return 0;
	if(a<b)return -1;
	return 1;
}

ifstream fin(InFile);
ofstream fout(OutFile);
POINT p[MaxN];
int n,nr,l;
vector<float> v;

int main()
{
	fin>>n;
	for(register int i=0;i<n;++i)
	{
		fin>>p[i].x>>p[i].y;
	}
	fin.close();
	
	for(register int i=0;i<n;++i)
	{
		for(register int j=0;j<n;++j)
		{
			if(i!=j)
			{
				v.push_back(atan2((double)p[i].y-p[j].y,(double)p[i].x-p[j].x));
			}
		}
	}
	
	sort(v.begin(),v.end());
	
	l=1;
	for(register int i=1;i<(int)v.size();++i)
	{
		if(fcmp(v[i],v[i-1])==0)
		{
			++l;
		}
		else
		{
			nr+=((l-1)*l)/2;
			l=1;
		}
	}
	nr+=((l-1)*l)/2;
	
	fout<<nr/2;
	fout.close();
	return 0;
}