Cod sursa(job #1668020)

Utilizator crysstyanIacob Paul Cristian crysstyan Data 29 martie 2016 14:46:19
Problema Trapez Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <fstream>
#include <cmath>
#include <algorithm>
#include <iomanip>
#define inf 1e17
#define eps 0.000000000000000001
#define NMAX 1005

using namespace std;

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

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

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

int main()
{
    f >> n;

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

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

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

    int curr = 1;

    for (i = 2; i <= n; ++ 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;
}