Cod sursa(job #2771797)

Utilizator SerbaP123Popescu Serban SerbaP123 Data 29 august 2021 12:17:20
Problema Trapez Scor 30
Compilator cpp-64 Status done
Runda PreOni 2005 Runda 1 Clasele 9-10 Marime 1.26 kb
#include <fstream>
#include <cmath>
#include <vector>
#include <algorithm>
#include <map>
#include <string>
#include <bitset>
#define pb(a) push_back(a)
using namespace std;

ifstream cin("trapez.in");
ofstream cout("trapez.out");

struct point{
    int x, y;
}v[1001];

struct functie{
    double a, b;
}f[1001 * 1001];

int n, p = 1, x, y;

bool cmp(functie n, functie m){
    if(n.a < m.a){
        return true;
    }
    else if(n.a == m.a && n.b < m.b){
        return true;
    }
    return false;
}

int main(){
    cin >> n;
    for(int i = 1; i <= n; ++i){
        cin >> x >> y;
        v[i].x = x;
        v[i].y = y;
    }
    for(int i = 1; i < n; ++i){
        for(int j = i + 1; j <= n; ++j){
            double n, m;
            n = v[i].y - v[j].y;
            m = v[j].x - v[i].x;
            f[p].a = n;
            f[p].b = m;
            p++;
        }
    }
    p--;
    sort(f + 1, f + p + 1, cmp);
    int ans = 0;
    for(int i = 1; i <= p; ++i){
        for(int j = i + 1; j <= p; ++j){
            double m1 = -f[i].a / f[i].b;
            double m2 = -f[j].a / f[j].b;
            if((double) m1 == (double) m2){
                ans++;
            }
        }
    }
    cout << ans;
    return 0;
}