Cod sursa(job #1958507)

Utilizator nicu_serteSerte Nicu nicu_serte Data 8 aprilie 2017 14:17:42
Problema Cele mai apropiate puncte din plan Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <fstream>
#include <algorithm>
#include <cmath>
#include <iomanip>
#include <climits>
using namespace std;
ifstream fin("cmap.in");
ofstream fout("cmap.out");
#define nmax 100005
struct punct
{
    long long x, y;
};
double dst(punct a, punct b)
{
    return sqrt((a.x-b.x)*(a.x-b.x) + (a.y-b.y)*(a.y-b.y));
}
bool cmpf(punct a, punct b)
{
    if(a.x==b.x)
        return a.y<b.y;
    return a.x<b.x;
}
int n;
double dmin=INT_MAX;
punct v[nmax];
void citire()
{
    int i;
    fin>>n;
    for(i=1; i<=n; i++)
        fin>>v[i].x>>v[i].y;
    fin.close();
}
void solve()
{
    int i;
    double d;
    for(i=1; i<n; i++)
    {
        d=dst(v[i], v[i+1]);
        if(d<dmin)
            dmin=d;
    }
}
int main()
{
    citire();
    sort(v+1, v+1+n, cmpf);
    solve();
    fout<<fixed<<setprecision(6)<<dmin<<'\n';
    fout.close();
    return 0;
}