Cod sursa(job #462607)

Utilizator BitOneSAlexandru BitOne Data 12 iunie 2010 11:24:41
Problema Cele mai apropiate puncte din plan Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 1.21 kb
#include <cmath>
#include <vector>
#include <cstdlib>
#include <fstream>
#include <iomanip>
#include <iterator>
#include <algorithm>

/*
 *
 */
using namespace std;
class point
{
    double x, y;
public:
    point( void ) : x(0.0), y(0.0) {}
    point( double _x, double _y ) : x(_x), y(_y) {}
    double dist( const point& z )
    {
        return sqrt( (x-z.x)*(x-z.x)+(y-z.y)*(y-z.y)  );
    }
    bool operator<( const point& z ) const
    {
        return x*z.y < y*z.x;
    }
    friend inline istream& operator>>( istream& in, point& z )
    {
        in>>z.x>>z.y;
        return in;
    }
    friend inline ostream& operator<<( ostream& out, const point& z )
    {
        out<<fixed<<z.x<<' '<<z.y<<'\n';
        return out;
    }
};
vector< point > v;
int main( void )
{
    int N, i, j;
    double dmin;
    ifstream in( "cmap.in" );
    in>>N;
    copy( istream_iterator<point>(in), istream_iterator<point>(), back_inserter(v) );
    dmin=v[1].dist( v[0] );
    for( i=1; i < N; ++i )
       for( j=1; j < N; ++j )
           if( i != j )
            dmin=min( dmin, v[i].dist( v[j] ) );
    ofstream out( "cmap.out" );
    out<<fixed<<dmin<<'\n';
    return EXIT_SUCCESS;
}