Cod sursa(job #2734957)

Utilizator rARES_4Popa Rares rARES_4 Data 1 aprilie 2021 17:55:29
Problema Trapez Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <iostream>
#include <fstream>
#include <map>
#include <algorithm>
using namespace std;
ifstream f ("trapez.in");
ofstream g ("trapez.out");
pair<int,int>pante[1000001];
int n,rasp;
pair<int,int> puncte[1001];
int _gcd(int a,int b)
{
    int r;
    while(b)
    {
        r = a % b;
        a = b;
        b = r;
    }
    return a;
}
int main()
{
    f >> n;
    int cnt = 1;
    for(int i = 1; i<=n; i++)
    {
        f >> puncte[i].first>> puncte[i].second;
    }
    for(int i = 1; i<=n; i++)
    {
        for(int j = i+1; j<=n; j++)
        {
            int numarator = puncte[j].second - puncte[i].second;
            int numitor = puncte[j].first - puncte[i].first;
            int gcd = _gcd(numarator,numitor);
            pante[cnt++] = {numarator/gcd,numitor/gcd};

        }
    }
    sort(pante+1,pante+cnt);
    for(int i = 1;i<cnt;i++)
    {
        int cnt_la_fel = 1;
        while(pante[i] == pante[i+1])
        {
            cnt_la_fel++;
            i++;
        }
        rasp = rasp + (cnt_la_fel * (cnt_la_fel-1))/2;
    }
    g << rasp;
}