Cod sursa(job #1569624)

Utilizator DrumeaVDrumea Vasile DrumeaV Data 15 ianuarie 2016 20:08:03
Problema Cele mai apropiate puncte din plan Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>
#include <algorithm>
#include <math.h>
#include <iomanip>

using namespace std;

typedef long long ll;

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

struct point
{
    ll x,y;
};

const int Mn = 1e5 + 6;
const ll oo = 1LL << 60;

int n;
ll sol = oo;
point ar[Mn];

bool comp(point a,point b)
{
    return a.x + a.y < b.x + b.y;
}

ll dist(point a,point b)
{
    return (b.x - a.x) * (b.x - a.x) + (b.y - a.y) * (b.y - a.y);
}

int main()
{
    fi >> n;

    for (int i = 1;i <= n;i++)
        fi >> ar[i].x >> ar[i].y;

    sort(ar + 1,ar + 1 + n,comp);

    for (int i = 1;i < n;i++)
        for (int j = i + 1;j < i + 8;j++)
            sol = min(sol,dist(ar[i],ar[j]));

    fo << setprecision(12) << sqrt(double(sol)) << endl;
}