Cod sursa(job #3185723)

Utilizator livliviLivia Magureanu livlivi Data 20 decembrie 2023 00:46:39
Problema Trapez Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

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

int gcd(int a, int b) {
	while (a != 0) {
		int r = b % a;
		b = a;
		a = r;
	}
	return b;
}

pair<int, int> getTg(pair<int, int> a, pair<int, int> b) {
	int x = a.first - b.first;
	int y = a.second - b.second;
	
	int d = gcd(x, y);
	x /= d;
	y /= d;

	if (y < 0) {
		x = -x;
		y = -y;
	}

	return {x, y};
}

void Solve() {
	int n; cin >> n;
	vector<pair<int, int>> v(n);
	for (int i = 0; i < n; i++) {
		cin >> v[i].first >> v[i].second;
	}

	vector<pair<int, int>> tg;
	for (int i = 0; i < n; i++) {
		for (int j = i + 1; j < n; j++) {
			tg.push_back(getTg(v[i], v[j]));
		}
	}

	sort(tg.begin(), tg.end());
	int ans = 0;
	int curr = 1;
	for (int i = 1; i < tg.size(); i++) {
		if (tg[i] != tg[i - 1]) {
			ans += (curr * (curr - 1) / 2);
			curr = 0;
		}
		curr++;
	}

	cout << ans << "\n";
}

int main() {
	Solve();
	return 0;
}