Cod sursa(job #865729)

Utilizator ELHoriaHoria Cretescu ELHoria Data 26 ianuarie 2013 21:21:16
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <fstream>
#include <algorithm>
#define eps 1e-12

using namespace std;
  
ifstream cin("trapez.in");
ofstream cout("trapez.out");

const int NMAX = 1000;
struct punct { int x, y;} p[NMAX];
int N, K;
long double slopes[NMAX*NMAX];

inline bool isEqual(long double a,long double b) {
	return (b - a < eps);
}

int main()
{
	cin>>N;
	for(int i = 0;i < N;i++) {
		cin>>p[i].x>>p[i].y;
	}
	for(int i = 0;i < N;i++) {
		for(int j = i + 1;j < N;j++) {
			slopes[K++] =((long double)1ll*p[i].y - p[j].y)/((long double)1ll*p[i].x - p[j].x);
		}
	}
	sort(slopes,slopes + K);
	long double s = slopes[0];
	int curr = 1;
	long long ans = 0;
	for(int i = 1;i < K;i++) {
		if(isEqual(s,slopes[i])) {
			curr++;
		} else {
			ans += (1ll*curr*(curr - 1))>>1ll;
			curr = 1;
			s = slopes[i];
		}
	}
	cout<<ans;
    return 0;
}