Cod sursa(job #1188322)

Utilizator xtreme77Patrick Sava xtreme77 Data 19 mai 2014 12:50:30
Problema Cele mai apropiate puncte din plan Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <fstream>
#include <algorithm>
#include <iomanip>
#include <cmath>
#define putere(a,b) ((a-b)*(a-b))
const int MAX = 1<<17;
using namespace std;
struct puncte{
    double x,y;
};
ifstream fin ("cmap.in");
ofstream fout ("cmap.out");
puncte q[MAX];
inline bool cmp(puncte a,puncte b){
    if(a.x==b.x)return a.y<b.y;
    return a.x<b.x;
}
double dist(puncte a,puncte b){
    return sqrt((double)putere(a.x,b.x)+(double)putere(a.y,b.y));
}
int main()
{
    int n;
    fin>>n;
    for(register int i=1;i<=n;++i)fin>>q[i].x>>q[i].y;
    sort(q+1,q+n+1,cmp);
    double d=1<<29;
    for(register int i=1;i<=n;++i){
        for(register int j=i+1;j<=n;++j){
            double prec=dist(q[i],q[j]);
            if(q[j].x-q[i].x>d)break;
            if(prec<d)d=prec;
        }
    }
    fout<<fixed<<setprecision(6)<<d<<'\n';
    return 0;
}