Cod sursa(job #1840702)

Utilizator giotoPopescu Ioan gioto Data 4 ianuarie 2017 19:09:55
Problema Trapez Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <cstdio>
#include <algorithm>
#include <cstdlib>
#define eps 1e-12
using namespace std;

int n, x[1001], y[1001];
long long Sol;
double p[1000001];
int main()
{
    freopen("trapez.in", "r", stdin);
    freopen("trapez.out", "w", stdout);
    scanf("%d", &n);
    for(int i = 1; i <= n ; ++i)
        scanf("%d%d", &x[i], &y[i]);
    int NR = 0;
    for(int i = 1; i <= n ; ++i){
        for(int j = i + 1; j <= n ; ++j){
            double x1 = 1.0 * (double)(x[j] - x[i]);
            double y1 = 1.0 * (double)(y[j] - y[i]);
            if(x1 != 0) p[++NR] = y1 / x1;
            else p[++NR] = 2000000001;
        }
    }
    sort(p + 1, p + NR + 1);
    int nr = 0;
    for(int i = 1; i <= NR ; ++i){
        if(fabs(p[i] - p[i + 1]) < eps)
            ++nr;
        else{
            Sol = Sol + 1LL * nr * (nr + 1) / 2;
            nr = 0;
        }
    }
    nr = 1000000000;
    Sol = Sol + 1LL * nr * (nr + 1) / 2;
    printf("%lld", Sol);
    return 0;
}