Cod sursa(job #1661297)

Utilizator isa_fares_mudiFares Mohamad isa_fares_mudi Data 23 martie 2016 19:35:11
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
const double eps = 1.e-14;
const double INF = 1.e9;
struct TRAPEZ {
    int x, y;
} v[1005];
double tg[1000005];
double panta( int x1, int y1, int x2, int y2 ) {
    if ( fabs (  x1 - x2  ) < eps )
        return INF;
    return ((1.* y2 - y1 ) / ( 1.* x2 - x1 ) );
}
bool paralel ( double p1, double p2 ) {
    if ( fabs ( p1 - p2 ) < eps )
        return 1;
    return 0;
}
int main() {
    freopen ( "trapez.in", "r", stdin );
    freopen ( "trapez.out", "w", stdout );
    int n, i, j, k, x, y, l, my_max = 0;
    scanf(  "%d", &n );
    for ( i = 1 ; i <= n ; ++ i ) {
        scanf("%d%d", &x, &y);
        v[i].x = x;
        v[i].y = y;
    }
    k = 0;
    for ( i = 1; i <= n; i ++)
        for ( j = i + 1; j <= n; j ++)
            tg[++k] = panta( v[i].x, v[i].y, v[j].x, v[j].y);
    sort( tg + 1, tg + k + 1);
    l = 1;
    for ( i = 2; i <= k; i ++)
        if ( paralel( tg[i], tg[i - 1] ) == 1 )
            l ++;
        else{
            my_max = my_max + l * ( l - 1 ) / 2;
            l = 1;
        }
    my_max = my_max + l * ( l - 1 ) / 2;
    printf( "%d\n", my_max );
    return 0;
    return 0;
}