Cod sursa(job #803922)

Utilizator toranagahVlad Badelita toranagah Data 28 octombrie 2012 16:19:28
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>
#include <cmath>
#include <algorithm>
#include <vector>
using namespace std;

ifstream fin("trapez.in");
ofstream fout("trapez.out");
const int MAX_N = 1005, INF = 1 << 30;

int N;
double x[MAX_N], y[MAX_N]; 
vector<double> panta;

int main() {
	fin >> N;
	panta.reserve(2 * MAX_N);
	for (int i = 0; i < N; ++i) {
		fin >> x[i] >> y[i];
	}
	for (int i = 0; i < N; ++i) {
		for (int j = i + 1; j < N; ++j) {
			if (x[i] != x[j]) {
				panta.push_back((y[j] - y[i]) / (x[j] - x[i]));
			} else {
				panta.push_back(double(INF));
			}
		}
	}
	sort(panta.begin(), panta.end());
	int result = 0, numTr = 1;
	for (int i = 0; i < panta.size() - 1; ++i) {
		if (panta[i] == panta[i+1]) {
			++numTr;
		} else {
			result += (numTr * (numTr - 1)) / 2;
			numTr = 1;
		}
	}
	fout << result;
}