Pagini recente » Cod sursa (job #1874285) | Cod sursa (job #1854033) | Cod sursa (job #526807) | Cod sursa (job #3240995) | Cod sursa (job #3338908)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
#include <climits>
#include <map>
using namespace std;
ifstream fin("trapez.in");
ofstream fout("trapez.out");
const int MAXN = 1002;
pair<long long, long long> v[MAXN], slopes[MAXN * MAXN];
int N, M;
inline bool cmp(const pair<long long, long long>& l, const pair<long long, long long>& r) {
return l.first * r.second < r.first * l.second;
}
inline bool eq(const pair<long long, long long>& l, const pair<long long, long long>& r) {
return l.first * r.second == r.first * l.second;
}
int main()
{
fin >> N;
for (int i = 0; i < N; ++i)
fin >> v[i].first >> v[i].second;
for (int i = 0; i < N; ++i) {
for (int j = i + 1; j < N; ++j) {
slopes[M++] = { v[i].second - v[j].second, v[i].first - v[j].first };
}
}
sort(slopes, slopes + M, cmp);
long long ans = 0LL;
int current_equal = 1;
for (int i = 1; i < M; ++i) {
if (eq(slopes[i - 1], slopes[i])) {
ans += current_equal;
current_equal++;
} else {
current_equal = 1;
}
}
fout << ans;
return 0;
}