Cod sursa(job #3351163)

Utilizator IvanAndreiIvan Andrei IvanAndrei Data 17 aprilie 2026 12:44:22
Problema Trapez Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.57 kb
#include <bits/stdc++.h>

using namespace std; 

const long long max_size = 3e5 + 20;

pair <long long, long long> v[max_size];

bool cmp (pair <long long, long long> x, pair <long long, long long> y)
{
    return x.second * y.first < x.first * y.second;
}

void solve ()
{
    long long n;
    cin >> n;
    for (long long i = 1; i <= n; i++)
    {
        cin >> v[i].first >> v[i].second;
    }
    vector <pair <long long, long long>> pante;
    for (long long i = 1; i <= n; i++)
    {
        for (long long j = i + 1; j <= n; j++)
        {
            long long dx = v[j].first - v[i].first, dy = v[j].second - v[i].second;
            if (dx < 0)
            {
                dx = -dx;
                dy = -dy;
            }
            pante.push_back({dy, dx});
        }
    }
    sort(pante.begin(), pante.end(), cmp);
    long long ans = 0, lg = 1;
    for (long long i = 1; i < pante.size(); i++)
    {
        if (pante[i].first * pante[i - 1].second != pante[i].second * pante[i - 1].first)
        {
            ans += lg * (lg - 1) / 2;
            lg = 1;
        }
        else
        {
            lg++;
        }
    }
    ans += lg * (lg - 1) / 2;
    cout << ans;
    cout << '\n';
}

signed main() 
{ 
#ifdef LOCAL 
    freopen("test.in", "r", stdin); 
    freopen("test.out", "w", stdout);
#else
    freopen("trapez.in", "r", stdin); 
    freopen("trapez.out", "w", stdout);
#endif // LOCAL 
    ios_base::sync_with_stdio(false); 
    cin.tie(0); 
    cout.tie(0); 
    long long tt; 
    tt = 1;
    //cin >> tt;
    while (tt--)
    {
        solve();
    }
    return 0; 
}