Cod sursa(job #992507)

Utilizator gbi250Gabriela Moldovan gbi250 Data 1 septembrie 2013 23:58:31
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <cstdio>
#include <algorithm>
#define eps 0.00000000001
using namespace std;

int n, i, j, k, nr, dr_pr;
double p[1001*1001];
struct {
    int x, y;
} v[1001];

int main()
{
    freopen("trapez.in", "r", stdin);
    freopen("trapez.out", "w", stdout);
    scanf("%d", &n);
    for(i=1; i<=n; ++i)
        scanf("%d %d", &v[i].x, &v[i].y);

    for(i=1; i<=n-1; ++i)
        for(j=i+1; j<=n; ++j)
            if(v[i].x-v[j].x)
                p[++k]=(double)(v[i].y-v[j].y)/(v[i].x-v[j].x);
            else
                p[++k]=0x3f3f3f3f;

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

    for(i=1; i<=k; ++i)
    {
        dr_pr=1;
        j=i+1;
        while(j<=k && p[j]-p[i]<=eps)
            ++j, ++i, ++dr_pr;
        nr+=dr_pr*(dr_pr-1)/2;
    }
    printf("%d\n", nr);
    return 0;
}