Cod sursa(job #1309377)

Utilizator felixiPuscasu Felix felixi Data 5 ianuarie 2015 18:27:04
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
///   InfoArena ~~ Trapez

#include <algorithm>
#include <fstream>

using namespace std;

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

const int    NMAX = 1000;
const double TANG = 666013;

struct PCT { double x,y; };

PCT v[NMAX+1];
double pant[NMAX*NMAX+NMAX+1];
int N, Ans = 0, sz = 0;

int main() {
    in >> N;
    for( int i = 1;  i <= N;  ++i ) {
        in >> v[i].x >> v[i].y;
    }
    for( int i = 1;  i < N;  ++i ) {
        for( int j = i+1;  j <= N;  ++j ) {
            if( v[i].y == v[j].y )  pant[ ++sz ] = TANG;
            else pant[ ++sz ] = (v[i].x-v[j].x) / (v[i].y-v[j].y);
        }
    }
    sort( pant+1, pant+sz+1 );
    int cate = 1;
    for( int i = 2;  i <= sz;  ++i ) {
        if( pant[i-1] == pant[i] ) ++cate;
        else {
            Ans += cate*(cate-1)/2;
            cate = 1;
        }
    }
    Ans += cate*(cate-1)/2;
    out << Ans << '\n';
    return 0;
}