Cod sursa(job #2625192)

Utilizator stefanst77Luca Stefan Ioan stefanst77 Data 5 iunie 2020 19:47:27
Problema Trapez Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <bits/stdc++.h>
#define nmax 2000000001
using namespace std;

ifstream fin ("trapez.in");
ofstream fout ("trapez.out");

int x[1007], y[1007], n;
long double panta[1000007];
int nr;

void Citire()
{
    fin >> n;
    for (int i = 1; i <= n ; i++)
        fin >> x[i] >> y[i];
}

void Rezolvare()
{
    for (int i = 1; i <= n; i++)
        for (int j =  i + 1; j <= n; j++)
        {
            if (x[i] == x[j]) panta[++nr] = nmax;
            else panta[++nr] = (1.0 * (y[j] - y[i])) / (1.0 *(x[j] - x[i]));
        }
    sort (panta + 1, panta + nr + 1);

    int k = 1, nrTrapeze = 0;

    for (int i = 1; i < nr; i++)
        if (panta[i] == panta[i + 1]) k++;
        else
        {
            nrTrapeze += (k * (k - 1) / 2);
            k = 1;
        }
    nrTrapeze += (k * (k - 1) / 2);
    fout << nrTrapeze << "\n";
}

int main()
{
    Citire();
    Rezolvare();
    fin.close();
    fout.close();
    return 0;
}