Cod sursa(job #1361027)

Utilizator Theodor1000Cristea Theodor Stefan Theodor1000 Data 25 februarie 2015 19:15:22
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <cstdio>
#include <algorithm>

#define eps 1e-12

using namespace std;

int a[1024], b[1024];
double v[1000010];

int main ()
{
    freopen ("trapez.in", "r", stdin);
    freopen ("trapez.out", "w", stdout);

    int n;
    scanf ("%d", &n);

    for (int i = 1; i <= n; ++i)
        scanf ("%d %d", &a[i], &b[i]);

    int k = 0;
    for (int i = 1; i < n; ++i)
        for (int j = i + 1; j <= n; ++j)
            if (a[i] - a[j]) v[++k] = 1.0 * (b[i] - b[j]) / (a[i] - a[j]);

    sort (v + 1, v + k + 1);

    //for (int i = 1; i <= k; ++i)
      //  printf ("%lf\n", 1.0 * v[i].f / v[i].s);

    int i = 2;
    long long nr = 0LL;
    while (i <= k)
    {
        long long nrr = 1LL;

        while (v[i] - v[i - 1] < eps && v[i] - v[i - 1] > -eps)
        {
            ++nrr;
            ++i;
        }

        nr += 1LL * nrr * (nrr - 1) / 2;
        ++i;
    }

    printf ("%lld\n", nr);

    return 0;
}