Cod sursa(job #1655080)

Utilizator BahamutLux Arcadia Bahamut Data 17 martie 2016 18:37:59
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <vector>

using namespace std;

const int INF = (1LL << 32) - 1;
const double eps = 1.e-14;

vector <double> v;
int a[1002][4];

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][1], &a[i][2]);
    }

    for(int i = 1; i <= n; ++ i) {
        for(int j = i + 1; j <= n; ++ j) {
            if(a[j][1] == a[i][1])
                v.push_back(INF);
            else
                v.push_back((double)(a[j][2] - a[i][2]) / (a[j][1] - a[i][1]));
        }
    }

    sort(v.begin(), v.end());

    int l = 1;
    long long rasp = 0;

    n = v.size();

    for(int i = 1; i < n; ++ i) {
        if(fabs(v[i] - v[i - 1]) < eps) {
            ++ l;
        } else {
            rasp = rasp + ((l - 1) * l) / 2;
            l = 1;
        }
    }

    rasp = rasp + ((l - 1) * l) / 2;

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

    return 0;
}