Cod sursa(job #1802832)

Utilizator stefanmereutaStefan Mereuta stefanmereuta Data 10 noiembrie 2016 17:52:09
Problema Trapez Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <fstream>
#include <algorithm>
#include <stdio.h>

#define MAX 1000

using namespace std;

struct punct {
    int x, y;
};

int main()
{
    ifstream fin("trapez.in");
    ofstream fout("trapez.out");

    int N;
    punct v[MAX];
    float pante[MAX * MAX] = {0};

    fin >> N;

    for (int i = 0; i < N; i++) {
        fin >> v[i].x >> v[i].y;

        for (int j = 0; j < i; j++) {
            if (v[i].x == v[j].x) {
                pante[(i - 1) * i / 2 + j] = 2000000000.0;
            } else {
                pante[(i - 1) * i / 2 + j] = (float) (v[j].y - v[i].y) / (v[j].x - v[i].x);
            }
        }
    }

    sort(pante, pante + (N - 1) * N / 2);

    for (int i = 0; i < N * 2; i++) {
        printf("%f ", pante[i]);
    }

    int i = 0, x, nr_trapeze = 0;

    while (i < (N - 1) * N / 2) {
        x = i;
        i++;
        while (i < 2 * N && pante[i] == pante[x]) {
            i++;
        }

        nr_trapeze += (i - x) * (i - x - 1) / 2;
    }

    fout << nr_trapeze;

    fin.close();
    fout.close();
    return 0;
}