Cod sursa(job #1309143)

Utilizator laurageorgescuLaura Georgescu laurageorgescu Data 5 ianuarie 2015 13:34:29
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include<fstream>
#include<algorithm>

using namespace std;

ifstream fin( "trapez.in" );
ofstream fout( "trapez.out" );

const int nmax = 1000;
const double inf = 9999;
double x[ nmax + 1 ], y[ nmax + 1 ];
double p[ nmax * nmax + 1 ];

int main() {
    int n, ans, para, ii, k;
    fin >> n;
    for( int i = 0; i < n; ++ i ) {
        fin >> x[ i ] >> y[ i ];
    }
    ii = 0;
    for( int i = 0; i < n - 1; ++ i ) {
        for( int j = i + 1; j < n; ++ j ) {
            if ( y[ i ] == y[ j ] ) {
                p[ ii ++ ] = inf;
            } else {
                p[ ii ++ ] = (x[ i ] - x[ j ]) / (y[ i ] - y[ j ]);
            }
        }
    }
    sort( p, p + ii );
    ans = 0;
    for( int i = 0; i < ii; i = k ) {
        k = i;
        while ( p[ i ] == p[ k ] && k < ii ) {
            ++ k;
        }
        para = k - i;
        ans += para * (para - 1) / 2;
    }
    fout << ans << "\n";
    fin.close();
    fout.close();
    return 0;
}