Cod sursa(job #2195654)

Utilizator MihaelaCismaruMihaela Cismaru MihaelaCismaru Data 16 aprilie 2018 22:24:08
Problema Trapez Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include<fstream>
#include<cmath>
#include<algorithm>
using namespace std;
ifstream in ("trapez.in");
ofstream out ("trapez.out");
int n,egale,sol,k;
double dreapta[1001 * 1001];
const double eps = 0.000000001;
struct str1 {
    double a,b;
}v[1005];
bool egal (int i, int j){
    if (dreapta[i] - dreapta[j] < eps) {
        return 1;
    }
    else {
        return 0;
    }
}
int main (void) {
    in >> n;
    for (int i = 1; i <= n; i ++) {
        in >> v[i].a >> v[i].b;
    }
    for (int i = 1; i <= n; i ++) {
        for (int j = i+1; j <= n; j ++) {
            dreapta[++k] = double ((v[j].b - v[i].b) / (v[j].a - v[i].a));
        }
    }
    sort (dreapta + 1,dreapta + k + 1);
    egale = 1;
    for (int i = 2; i <= k; i ++) {
        if (egal(i,i-1) == 1) {
            egale ++;
        }
        else {
            sol += egale * (egale - 1) / 2;
            egale = 1;
        }
    }
    sol += egale * (egale - 1) / 2;
    out << sol;
    return 0;
}