Pagini recente » Cod sursa (job #463712) | Cod sursa (job #2633422) | Cod sursa (job #1359002) | Cod sursa (job #1552575) | Cod sursa (job #2237524)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream cin ("trapez.in");
ofstream cout ("trapez.out");
const int NMAX = 1e3;
typedef pair <int, int> pii;
int n, m;
int lg, cnt;
long long sol;
pii v[1 + NMAX], p[1 + NMAX * NMAX];
bool comp(pii a, pii b) {
return 1LL * a.first * b.second <= 1LL * a.second * b.first;
}
int main() {
cin >> n;
for(int i = 1; i <= n; i++)
cin >> v[i].first >> v[i].second;
for(int i = 1; i < n; i++) {
for(int j = i + 1; j <= n; j++) {
if(v[i].second == v[j].second)
cnt++;
else
p[++m] = {v[i].first - v[j].first, v[i].second - v[j].second};
}
}
sort(p + 1, p + m + 1, comp);
lg = 1;
for(int i = 1; i < m; i++) {
if(1LL * p[i].first * p[i + 1].second == 1LL * p[i].second * p[i + 1].first)
lg++;
else {
sol += 1LL * lg * (lg - 1) / 2;
lg = 1;
}
}
sol += 1LL * cnt * (cnt - 1) / 2;
cout << sol;
return 0;
}