Nu aveti permisiuni pentru a descarca fisierul grader_test1.in
Cod sursa(job #3338908)
| Utilizator | Data | 5 februarie 2026 13:56:43 | |
|---|---|---|---|
| Problema | Trapez | Scor | 20 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 1.2 kb |
#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;
}