Cod sursa(job #3320669)

Utilizator Cristian2010Baciu Cristian Cristian2010 Data 6 noiembrie 2025 22:04:14
Problema Text Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.41 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("trapez.in");
ofstream fout("trapez.out");
long long x[1001], y[1001];
long long dx[500000], dy[500000];
long long cmmdc(long long a, long long b)
{
    if (a < 0) a = -a;
    if (b < 0) b = -b;
    while (b)
    {
        long long r = a % b;
        a = b;
        b = r;
    }
    return a;
}

int main()
{
    int n, i, j, k = 0;
    long long trapeze = 0;

    fin >> n;
    for (i = 0; i < n; i++)
        fin >> x[i] >> y[i];

    for (i = 0; i < n - 1; i++)
        for (j = i + 1; j < n; j++)
        {
            long long a = y[j] - y[i];
            long long b = x[j] - x[i];

            if (b == 0)
            {
                a = 1;
                b = 0;
            }
            else if (a == 0)
            {
                a = 0;
                b = 1;
            }
            else
            {
                if (b < 0)
                {
                    b = -b;
                    a = -a;
                }
                long long g = cmmdc(a, b);
                a /= g;
                b /= g;
            }

            dy[k] = a;
            dx[k] = b;
            k++;
        }

    for (i = 0; i < k - 1; i++)
        for (j = i + 1; j < k; j++)
            if (dx[i] == dx[j] && dy[i] == dy[j])
                trapeze++;

    fout << trapeze;
    return 0;
}