Cod sursa(job #2388811)

Utilizator greelioGreenio Greely greelio Data 26 martie 2019 15:21:07
Problema Trapez Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include<bits/stdc++.h>
#define x first
#define y second
#define pii pair<int,int>
#define N 1030
#define int long long
using namespace std;

pii a[N], c[N*N];
int n,k,k1,k2,rs;

void getp(int i, int j) {
    c[++k]={a[j].y-a[i].y, a[j].x-a[i].x};
    int gcd=__gcd(c[k].x, c[k].y);
    if (gcd==0) {
        --k; return;
    }
    c[k].x/=gcd; c[k].y/=gcd;
}


int32_t main() {
    ifstream cin("trapez.in");
    ofstream cout("trapez.out");
    cin>>n;
    for (int i=1; i<=n; ++i) {
        cin>>a[i].x>>a[i].y;
    }
    for (int i=1; i<=n; ++i) {
        for (int j=i+1; j<=n; ++j) {
            getp(i,j);
        }
    }
    sort(c+1,c+1+k);
    int k2=1; c[k+1]={-1e9,0};
    for (int i=2; i<=k+1; ++i) {
        if (c[i]==c[i-1]) ++k2;
        else {
            rs+=k2*(k2-1)/2;
            k2=1;
        }
    }
    cout<<rs;
    return 0;
}