Pagini recente » Cod sursa (job #442174) | Cod sursa (job #2094944) | Cod sursa (job #461572) | Cod sursa (job #1457774) | Cod sursa (job #2923488)
#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";
}