Cod sursa(job #3222871)

Utilizator unomMirel Costel unom Data 11 aprilie 2024 19:47:10
Problema Trapez Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <fstream>
#include <algorithm>
#include <map>

using namespace std;

ifstream in("trapez.in");
ofstream out("trapez.out");
int n, ans;
pair<int, int> v[1005];
map<pair<pair<int, int>, int>, int> um;

int 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 * dy > 0)
            {
                sgn = 1;
            }
            else
            {
                sgn = -1;
            }

            gcd = __gcd(dx, dy);

            dx /= gcd;
            dy /= gcd;

            um[{{dx, dy}, sgn}]++;
        }
    }

    for(auto it: um)
    {
        ans += (it.second * (it.second - 1)) / 2;
    }

    out<<ans;

    return 0;
}