Pagini recente » Cod sursa (job #2042837) | Cod sursa (job #989472) | Cod sursa (job #2449014) | Cod sursa (job #1955917) | Cod sursa (job #2764398)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("cmap.in");
ofstream fout("cmap.out");
const long long dim=100009;
struct punct{
long long x,y;}v[dim],aux[dim];
long long d=1e15;
long long dist(punct A,punct B){
return (A.x-B.x)*(A.x-B.x)+(A.y-B.y)*(A.y-B.y);
}
bool cmp(punct A,punct B){
if(A.x==B.x)
return A.y<B.y;
return A.x<B.x;
}
void dei(long long st,long long dr){
if(st<dr){
long long mij=(st+dr)/2;
long long pivot=v[mij].x;
dei(st,mij);
dei(mij+1,dr);
long long len=st,p1=st,p2=mij+1;
while(p1<=mij&&p2<=dr){
if(v[p1].y<v[p2].y)
aux[len++]=v[p1++];
else
aux[len++]=v[p2++];
}
while(p1<=mij)
aux[len++]=v[p1++];
while(p2<=dr)
aux[len++]=v[p2++];
len=st;
for(long long i=st;i<=dr;i++)
if(abs(pivot-v[i].x)<=d)
aux[len++]=v[i];
for(long long i=st;i<len;i++){
for(long long j=max(st,i-7);j<i;j++)
d=min(d,dist(aux[i],aux[j]));
}
}
}
signed main(){
long long n;
fin>>n;
for(long long i=1;i<=n;i++){
fin>>v[i].x>>v[i].y;
}
sort(v+1,v+n+1,cmp);
dei(1,n);
fout<<fixed<<setprecision(6)<<sqrt(d);
}