Pagini recente » Cod sursa (job #2235224) | Cod sursa (job #1723995) | Statistici Serban Tudor Gabriel (SerbanTudor04) | Cod sursa (job #2280382) | Cod sursa (job #1617463)
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
const int N=100000,INF=1000000000;
class Point{
public:
int x,y;
bool operator<(const Point&p)const{
if(x==p.x)
return y<p.y;
return x<p.x;
}
};
Point p[N+1];
int n;
long long dist(Point p1,Point p2){
return (p1.x-p2.x)*1LL*(p1.x-p2.x)+(p1.y-p2.y)*1LL*(p1.y-p2.y);
}
long long divide(int l,int r){
if(r-l<=2)
return min(min(dist(p[l],p[l+1]),dist(p[l],p[l+2])),dist(p[l+1],p[l+2]));
else{
int m=(l+r)/2;
int i,j;
long long d1=min(divide(l,m),divide(m,r));
for(i=m;i>=l&&p[m].x-p[i].x<=d1;i--)
for(j=m+1;j<=r&&p[j].x-p[m].x<=d1;j++)
d1=min(d1,dist(p[i],p[j]));
return d1;
}
}
int main(){
int i;
freopen("cmap.in","r",stdin);
freopen("cmap.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d%d",&p[i].x,&p[i].y);
sort(p+1,p+n+1);
printf("%lf",sqrt(divide(1,n)));
return 0;
}