Pagini recente » Cod sursa (job #3311314) | Cod sursa (job #3354241) | Cod sursa (job #3329793) | Cod sursa (job #3329244) | Cod sursa (job #3341860)
#include <fstream>
#include <cmath>
#include <algorithm>
#include <iomanip>
using namespace std;
ifstream fin("cmap.in");
ofstream fout("cmap.out");
const int nmax=100000;
const int oo=INT_MAX;
pair <int,int> point[nmax+5],newpoint[nmax+5]; int n,k;
void read(){
fin>>n;
for(int i=1;i<=n;i++){
int x,y;
fin>>x>>y;
point[i]=make_pair(x,y);
}
sort(point+1,point+n+1);
}
long long dist(pair <int,int> a,pair <int,int> b){
return (a.first-b.first)*(a.first-b.first)+(a.second-b.second)*(a.second-b.second);
}
long long dei(int left,int right){
if(left==right)
return oo;
if(left==right-1)
return dist(point[left],point[right]);
int mid=(left+right)/2;
long long a=dei(left,mid);
long long b=dei(mid+1,right);
long long Min=min(a,b);
for(int i=left,k=0;i<=right;++i){
if(abs(point[i].first-point[mid].first)<Min)
newpoint[++k]=point[i];
}
for(int i=1;i<=k;++i)
for(int j=i+1;j<=k;++j)
Min=min(Min,dist(newpoint[i],newpoint[j]));
return Min;
}
int main()
{
read();
fout<<fixed<<setprecision(6)<<sqrt(dei(1,n))<<"\n";
return 0;
}