Cod sursa(job #1681607)

Utilizator razvandRazvan Dumitru razvand Data 9 aprilie 2016 16:42:58
Problema Cele mai apropiate puncte din plan Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <limits.h>
#include <cmath>
#include <iomanip>

using namespace std;

struct pct {
    long long x;
    long long y;
};

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

pct v[100003];

bool cmp(pct a, pct b) {
    if(a.x != b.x)
        return a.x < b.x;
    else
        return a.y < b.y;
}

inline long long dist(pct a, pct b) {
    return (a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y);
}

int main() {

    int n;
    in >> n;

    for(int i = 1; i <= n; i++)
        in >> v[i].x >> v[i].y;
    sort(v+1, v+n+1, cmp);

    long long mi = dist(v[1], v[2]);
    int j;

    for(int i = 2; i <= n; i++)
        for(int j = i+1; v[j].x-v[i].x < mi && j <= n; j++)
            if(dist(v[i], v[j]) < mi)
                mi = dist(v[i], v[j]);

    out << fixed << setprecision(6) << sqrt(mi);

    return 0;
}