Cod sursa(job #3338908)

Utilizator parus_majorParus Major parus_major 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;
}