Cod sursa(job #2764248)

Utilizator DordeDorde Matei Dorde Data 20 iulie 2021 00:56:11
Problema Trapez Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <bits/stdc++.h>
using namespace std;
int const N = 1e6 + 3;
double tg [N];
int X [1001] , Y [1001];
int main (){
    freopen ("trapez.in" , "r" , stdin);
    freopen ("trapez.out" , "w" , stdout);
    int n;
    scanf ("%d" , &n);
    for(int i = 1 ; i <= n ; ++ i)
        scanf ("%d%d" , &X [i] , &Y [i]);
    int k = 0;
    for(int i = 1 ; i < n ; ++ i)
        for(int j = 1 + i ; j <= n ; ++ j)
            tg [++ k] = (double)(X [i] - X [j]) / (double)(Y [i] - Y [j]);
    sort (tg + 1 , tg + 1 + k);
    long long ans = 0;
    int lg = 1;
    for(int i = 2 ; i <= k ; ++ i){
        if (tg [i] == tg [i - 1]){
            ++ lg;
            continue;
        }
        ans = ans + 1LL * lg * (lg - 1) / 2LL;
        lg = 1;
    }
    ans = ans + 1LL * lg * (lg - 1) / 2LL;
    printf ("%lld" , ans);
    return 0;
}