Cod sursa(job #2410189)

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

pair<int, int> a[1005];

map<pair<int, 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;
    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}] = m[{fi, se}] + 1;
        }
    }
    comb[0] = 0;
    for(int i = 1; i<n; i++)
    {
        comb[i] = comb[i-1]+(i-1);
    }
    int suma = 0;
    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;
}