Cod sursa(job #894665)

Utilizator PatrikStepan Patrik Patrik Data 26 februarie 2013 22:45:21
Problema Cele mai apropiate puncte din plan Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.12 kb
    #include<fstream>
    #include<cstdio>
    #include<cmath>
    #include<algorithm>
    #define MAX 100001
    #define INF 4000000004
    using namespace std;
    int n;
    struct P
    {int x,y;}p[MAX];

    void citire();
    bool cmp( P a ,P b)
    {
        if(a.x == b.x)
            return a.y < b.y;
        return a.x < b.x;
    }
    double dist(P a , P b)
    {
        return sqrt(1ll*(a.x-b.x)*(a.x-b.x) + 1ll*(a.y-b.y)*(a.y-b.y));
    }
    double solve();
    void tipar();

    int main()
    {
        citire();
        sort(p+1,p+n+1,cmp);
        tipar();
    }

    void citire()
    {
        ifstream f("cmap.in");
        f>>n;
        for( int i = 1; i <= n ; ++i )
            f>>p[i].x>>p[i].y;
            f.close();
    }

    double solve()
    {
        double minn = INF;
        for( int i = 1 ; i <= n ; ++i )
            for( int j = i+1 ; j <= i+7 ; ++j)
            if(dist(p[i],p[j]) < minn)minn = dist(p[i],p[j]);
        return minn;
    }

    void tipar()
    {
        freopen("cmap.out" , "w" , stdout );
        printf("%.6lf" , solve());
    }