Cod sursa(job #3222877)

Utilizator unomMirel Costel unom Data 11 aprilie 2024 19:55:49
Problema Trapez Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <fstream>
#include <unordered_map>

using namespace std;

#define int long long

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

signed main()
{
    in>>n;

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

    int dx, dy;
    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;

                um[slope]++;
            }
        }
    }

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

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

    out<<ans;

    return 0;
}