Cod sursa(job #2410167)

Utilizator Mirela_MagdalenaCatrina Mirela Mirela_Magdalena Data 19 aprilie 2019 19:49:08
Problema Trapez Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <cstdio>
#include <map>
using namespace std;

struct panta{
int numa, numi;
};

struct puncte{
int x, y;
}pct[1010];

map<pair<int, int>, int> p;
int n;


int cmmdc(int x, int y)
{
    int r;
    while(y)
    {
        r = x%y;
        x = y;
        y = r;
    }
    return x;
}

int comb(int n)
{
    return n*(n-1)/2;
}

int main()
{
    freopen("trapez.in", "r", stdin);
    freopen("trapez.out", "w", stdout);
    scanf("%d", &n);
    int rez=0;
    for(int i=1; i<=n; i++)
        scanf("%d %d\n", &pct[i].x, &pct[i].y);
    for(int i=1; i<=n; i++)
        for(int j=i+1; j<=n; j++)
        {
            int a = pct[i].y-pct[j].y;
            int b = pct[i].x-pct[j].x;
            int cmd = cmmdc(a, b);
            a/=cmd;
            b/=cmd;
            p[{a, b}]++;
        }
    for(auto it:p)
    {
        int nn = it.second;
        rez+=comb(nn);
    }
    printf("%d", rez);
    return 0;
}