Cod sursa(job #739787)

Utilizator dutzulBodnariuc Dan Alexandru dutzul Data 23 aprilie 2012 21:27:17
Problema Cele mai apropiate puncte din plan Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <fstream>
#define LE 100636
#include <algorithm>
#include <iomanip>
#include <cmath>
#define ll long long
using namespace std;
ifstream f("cmap.in");
ofstream g("cmap.out");

struct trei
{
  ll x,y,suma;
} A[LE],S1,S2;

ll  n,i,j;
long double minim,D,rez;

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

ll   DIST( trei a,trei b)
{
  return (ll)((ll)(a.y-b.y)*(a.y-b.y)+(ll)(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=(ll)1<<62;

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

g<<setprecision(7)<<fixed;
long double de=minim;


  g<<(long double)sqrt((long double)de);


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