Cod sursa(job #1668246)

Utilizator crysstyanIacob Paul Cristian crysstyan Data 29 martie 2016 17:46:56
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <fstream>
#include <algorithm>
#include <iomanip>
#define NMAX 1005
#define inf 1e15
#define eps 1e-15

using namespace std;

ifstream f("trapez.in");
ofstream g("trapez.out");

int i, n, j, x[NMAX], y[NMAX], cont = 0, ans = 0;
double panta[NMAX * NMAX];

bool comp(double a, double b)
{
    return a - b < eps;
}

int main()
{
    f >> n;

    for (i = 1; i <= n; ++ i)
    {
        f >> x[i] >> y[i];

        for (j = i - 1; j >= 1; -- j)
            if (x[i] == x[j])
                panta[++ cont] = inf;
            else
                panta[++ cont] = (double) (y[i] - y[j]) / (x[i] - x[j]);
    }

    sort(panta + 1, panta + cont + 1, comp);

    int curr = 1;

    for (i = 2; i <= cont; ++ i)
        if (panta[i] - panta[i - 1] <= eps)
            curr ++;
        else
        {
            ans += curr * (curr - 1) / 2;
            curr = 1;
        }

    ans += curr * (curr - 1) / 2;

    g << ans << '\n';
    return 0;
}