Cod sursa(job #739763)

Utilizator dutzulBodnariuc Dan Alexandru dutzul Data 23 aprilie 2012 20:40:34
Problema Cele mai apropiate puncte din plan Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <fstream>
#define LE 100636
#include <algorithm>
#include <iomanip>
#define inf 100000000
#include <cmath>
using namespace std;
ifstream f("cmap.in");
ofstream g("cmap.out");

struct trei
{
  int x,y,suma;
} A[LE];

int n,i,j;
float minim,D;

int cmp(trei a,trei b)
{
  return a.suma<b.suma;
}

float  DIST( trei a,trei b)
{
  return sqrt((a.y-b.y)*(a.y-b.y)+(a.x-b.x)*(a.x-b.x));
}


int main()
{
  f>>n;
  for(i=1; i<=n; ++i)
    {
      f>>A[i].x>>A[i].y;
      A[i].suma=A[i].x+A[i].y;
    }

  sort(A+1,A+n+1,cmp);

minim=inf;

  for(i=1; i<=n; ++i)
    for(j=i+1; j<=j+50&&j<=n; ++j)
      {
        D=DIST(A[i],A[j]);
        if (D<minim)
          minim=D;
      }

  g<<setprecision(7)<<fixed;
  g<<minim<<'\n';

  f.close();
  g.close();
  return 0;
}