Cod sursa(job #2410202)

Utilizator razvanradulescuRadulescu Razvan razvanradulescu Data 19 aprilie 2019 20:02:16
Problema Trapez Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.3 kb
#include <iostream>
#include <cstdio>
#include <map>
#include <algorithm>
using namespace std;

pair<int, int> a[1005];

map<pair<int, int>, pair<int, int>> m;
int n, comb[1002];

int cmmdc(int a, int b)
{
    int r;
    while(b)
    {
        r = a%b;
        a = b;
        b = r;
    }
    return a;
}

void rez()
{
    scanf("%d", &n);
    for(int i = 0; i<n; i++)
    {
        scanf("%d %d", &a[i].first, &a[i].second);
    }
    int c, fi, se;
    int suma = 0;
    for(int i = 0; i<n; i++)
    {
        for(int j = i+1; j<n; j++)
        {
            fi = a[i].first - a[j].first;
            se = a[i].second - a[j].second;
            c = cmmdc(fi, se);
            if(c!=0)
            {
                fi = fi/c;
                se = se/c;
            }
            m[{fi, se}].first++;
            suma+=m[{fi, se}].second + (m[{fi, se}].first-1);
            m[{fi, se}].second = m[{fi, se}].second + (m[{fi, se}].first-1);
        }
    }
    /*comb[0] = 0;
    for(int i = 1; i<n; i++)
    {
        comb[i] = comb[i-1]+(i-1);
    }
    for(auto itr : m)
    {
        suma+=comb[itr.second];
    }*/
    printf("%d", suma);
}

int main()
{
    freopen("trapez.in", "r", stdin);
    freopen("trapez.out", "w", stdout);
    rez();
    return 0;
}