Cod sursa(job #2613730)

Utilizator Horia14Horia Banciu Horia14 Data 10 mai 2020 16:05:37
Problema Trapez Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.08 kb
#include<fstream>
#include<iostream>
#include<vector>
#include<algorithm>
#define MAX_N 1000
#define EPS 1e-12
#define oo 2000001050.0
using namespace std;

vector<pair<int, int>> point;
double p[MAX_N * (MAX_N + 1) / 2];


int main() {
    int n, x, y, j, m;
    long long cnt;
    ifstream fin("trapez.in");
    ofstream fout("trapez.out");
    fin >> n;
    for(int i = 0; i < n; ++i) {
        fin >> x >> y;
        point.push_back(make_pair(x, y));
    }
    fin.close();
    m = 0;
    for(unsigned i = 0; i < point.size(); ++i) {
        for(unsigned j = i + 1; j < point.size(); ++j) {
            if(point[i].first == point[j].first)
                p[m++] = oo;
            else p[m++] = (double)(point[i].second - point[j].second) / (double)(point[i].first - point[j].first);
        }
    }

    sort(p, p + m);
    int i = 0;
    cnt = 0;
    while(i < m) {
        j = 1;
        i++;
        while((i < m) && (p[i] - p[i - 1] < EPS)) {
            j++;
            i++;
        }
        cnt += (j * (long long)(j - 1)) / 2LL;
    }
    fout << cnt << "\n";
    fout.close();
    return 0;
}