Cod sursa(job #1467735)

Utilizator BLz0rDospra Cristian BLz0r Data 4 august 2015 00:34:27
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <cstdio>
#include <cstdlib>
#include <climits>
#include <algorithm>
using namespace std;

#define Nmax 1002
#define inf 1 << 30
#define eps 1e-12
FILE *f = fopen ( "trapez.in", "r" );
FILE *g = fopen ( "trapez.out", "w" );

pair < int, int > v[Nmax];
double Panta[Nmax*Nmax];

int main(){

    int N, x, y, rez = 0;

    fscanf ( f, "%d", &N );

    for ( int i = 1; i <= N; ++i ){
        fscanf ( f, "%d%d", &x, &y );
        v[i] = make_pair (x,y);
    }

    int k = 0;
    for ( int i = 1; i <= N; ++i ){
        for ( int j = i+1; j <= N; ++j ){
            double T1 = 1.0 * (v[j].second - v[i].second);
            double T2 = 1.0 * (v[j].first - v[i].first);
            if ( T2 == 0 )
                Panta[++k] = inf;
            else
                Panta[++k] = T1 / T2;
        }
    }
    sort ( Panta + 1, Panta + k + 1 );

    int nr = 0;
    for ( int i = 1; i <= k+1; ++i ){
        if ( fabs ( Panta[i] - Panta[i-1] ) < eps )
            nr++;
        else{
            rez += ( nr * (nr-1) ) / 2;
            nr = 1;
        }
    }

    fprintf ( g, "%d", rez );

    return 0;
}