Cod sursa(job #1838411)

Utilizator mihai.alphamihai craciun mihai.alpha Data 31 decembrie 2016 22:37:04
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <cstdio>
#include <algorithm>
#define BIG 2000000000
#define sm 0.000000000000001
FILE *fin, *fout;
double u[1000 * 1000];
int x[1000], y[1000];

bool cmp(double a, double b)  {
    return a < b;
}
int main()  {
    fin = fopen("trapez.in", "r");
    fout = fopen("trapez.out", "w");
    int n, a, b;
    fscanf(fin, "%d", &n);
    for(int i = 0;i < n;i++)  {
        fscanf(fin, "%d%d", &x[i], &y[i]);
    }
    int ind = 0;
    for(int i = 0;i < n - 1;i++)
        for(int j = i + 1;j < n;j++)  {
            if(y[i] - y[j])
                u[ind++] = (double)(x[i] - x[j]) / (double)(y[i] - y[j]);
            else
                u[ind++] = BIG;
        }
    std::sort(u, u + ind, cmp);
    int k = u[0];
    int nr = 1;
    long long t = 0;
    for(int i = 1;i < ind;i++)  {
        if(u[i] - u[i - 1] <= sm)  {
            nr++;
        }
        else  {
            t += nr * (nr - 1) / 2,
            nr = 1;
        }
    }
    t += nr * (nr - 1) / 2;
    fprintf(fout, "%lld", t);
    fclose(fin);
    fclose(fout);
    return 0;
}