Cod sursa(job #709573)

Utilizator okros_alexandruOkros Alexandru okros_alexandru Data 8 martie 2012 11:50:00
Problema Trapez Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <fstream>
#include <algorithm>
#define EPS 0.000000001
#define oo (1<<30)
#define NMAx 1010
#define Sum(x) ((x)*(x+1)/2)
using namespace std;

int N,Nr,Sol,X[NMAx],Y[NMAx];
double M[NMAx*NMAx];

double Panta(int Xa,int Ya,int Xb,int Yb) {
	
	if(Xa-Xb==0)
		return oo;
	else
		return 1.0*(Ya-Yb)/(Xa-Xb);
	
}
void citire() {

	ifstream in("trapez.in");
	in>>N;
	
	for(int i=1;i<=N;i++)
		in>>X[i]>>Y[i];
	
}
void afis() {
	
	ofstream out("trapez.out");
	out<<Sol<<'\n';
	out.close();
	
}
int main() {
	
	int i,j,K;
	citire();
	
	for(i=1;i<N;i++)
		for(j=i+1;j<=N;j++)
			M[++Nr]=Panta(X[i],Y[i],X[j],Y[j]);
	
	sort(M+1,M+Nr+1);
	
	for(i=2,K=0;i<=Nr;i++)
		if(M[i]-M[i-1]<EPS)
			K++;
		else {
			Sol+=Sum(K);
			K=0;
			}
		
	afis();
	
	return 0;
	
}