Cod sursa(job #3222875)

Utilizator unomMirel Costel unom Data 11 aprilie 2024 19:53:43
Problema Trapez Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <fstream>
#include <algorithm>
#include <set>

using namespace std;

#define int long long

ifstream in("trapez.in");
ofstream out("trapez.out");
int n, ans, vertical;
pair<int, int> v[1005];
set<long double> s;
multiset<long double> ms;

signed main()
{
    in>>n;

    for(int i = 1; i<=n; i++)
    {
        in>>v[i].first>>v[i].second;
    }

    int dx, dy, gcd, sgn;
    for(int i = 1; i<=n; i++)
    {
        for(int j = i + 1; j<=n; j++)
        {
            dx = v[i].first - v[j].first;
            dy = v[i].second - v[j].second;

            if(dx == 0)
            {
                vertical++;
            }
            else
            {
                long double slope = (long double)dx / (long double)dy;
                ms.insert(slope);
                s.insert(slope);
            }
        }
    }

    ans = max(0LL, (vertical * (vertical - 1)) / 2);

    int cnt;
    for(auto it: s)
    {
        cnt = ms.count(it);

        ans += (cnt * (cnt - 1)) / 2;
    }

    out<<ans;

    return 0;
}