Cod sursa(job #1958666)

Utilizator RaZxKiDDavid Razvan RaZxKiD Data 8 aprilie 2017 16:14:10
Problema Cele mai apropiate puncte din plan Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
#include <cmath>
#include <iomanip>

using namespace std;

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

struct pct{
    int x,y;
    bool operator < (pct p1) const{
        return x<p1.x;
    }
};
int n;
vector<pct> PCT;

void read(){
    int x,y;
    in>>n;
    for(int i=1;i<=n;i++){
        in>>x>>y;
        PCT.push_back({x,y});
    }
}
inline double dist(pct p1, pct p2){
    return sqrt((p2.x-p1.x)*(p2.x-p1.x)+(p2.y-p1.y)*(p2.y-p1.y));
}
void solve(){
    double dmin=dist(PCT.front(),PCT.back());
    sort(PCT.begin(),PCT.end());
    for(auto it1=PCT.begin();it1!=PCT.end();it1++){
        for(auto it2=it1+1;it2!=PCT.end();it2++){
            if(it2->x-it1->x>dmin)
                break;
            dmin=min(dmin,dist(*it1,*it2));
        }
    }
    out<<setprecision(6)<<fixed<<dmin;
}
int main(){
    read();
    solve();
    return 0;
}