Cod sursa(job #2923488)

Utilizator bent_larsenSturzu Antonio-Gabriel bent_larsen Data 14 septembrie 2022 20:06:34
Problema Trapez Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <bits/stdc++.h>
using namespace std;

int gcd(int a, int b)
{
	if(!b)
		return a;
	return gcd(b, a % b);
}

int solve(vector<vector<int>> v)
{
	int n = v.size(), ans = 0;
	map<vector<int>, int> mp;
	
	int vert = 0;
	for(int i = 0;i < n;++i)
		for(int j = i + 1;j < n;++j)
		{
			int x = v[i][0] - v[j][0];
			int y = v[i][1] - v[j][1];
			if(!x)
				++vert;
			else
			{
				int gc = gcd(x, y);
				vector<int> tmp{x / gc, y / gc};
				++mp[tmp];
			}
		}
	ans += (vert * (vert - 1)) / 2;
	for(auto it: mp)
		ans += (it.second * (it.second - 1)) / 2;
	return ans;
}


int main() {
	freopen("trapez.in", "r", stdin);
	freopen("trapez.out", "w", stdout);
	int n;
	cin >> n;
	vector<vector<int>> v;
	for(int i = 0;i < n;++i)
	{
		vector<int> tmp(2);
		cin >> tmp[0] >> tmp[1];
		v.push_back(tmp);
	}
	cout << solve(v) << "\n";
}