Cod sursa(job #1968302)

Utilizator vlasiuflaviusVlasiu Flavius vlasiuflavius Data 17 aprilie 2017 16:51:20
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <fstream>
#include <algorithm>
#define x first
#define y second
using namespace std;
ofstream fout ("trapez.out");
ifstream fin ("trapez.in");
int n,i,j,par,raspuns,k,curent;
pair < double , double > v[1005];
double rsp[1000005];

const double epsilon = 0.000000000001;
int main()
{
    fin>>n;
    for( i = 1 ; i <= n ; i++ )
        fin>>v[ i ].x>>v[ i ].y;
    for( i = 1 ; i < n ; i++ )
    {
        for( j = i + 1 ; j <= n ; j++ )
        {
            if( v[ i ].x == v[ j ].x )
                par++;
            else
                rsp[ ++k ] = ( v[ i ].y - v[ j ].y ) / ( v[ i ].x - v[ j ].x );
        }
    }
    sort( rsp + 1 , rsp + k + 1 );
    for( i = 1 ; i < k ; i++ )
    {
        curent = 0;
        while( max( rsp[ i ] - rsp[ i + 1 ] , rsp[ i + 1 ] - rsp[ i ] ) < epsilon && i < k )
        {
            i++;
            curent++;
        }
        raspuns += ( curent * ( curent + 1 ) ) >> 1;
    }
        raspuns += ( par * ( par - 1 ) ) >> 1;
    fout<<raspuns;
}