#include<algorithm>#include<cmath>#include<cstdlib>#include<cstring>#include<iomanip>#include<iostream>usingnamespacestd;constexprintMAXN=200010;intn,d[MAXN],lc[MAXN],rc[MAXN];doubleans=2e18;structnode{doublex,y;}s[MAXN];doubleL[MAXN],R[MAXN],D[MAXN],U[MAXN];doubledist(inta,intb){return(s[a].x-s[b].x)*(s[a].x-s[b].x)+(s[a].y-s[b].y)*(s[a].y-s[b].y);}boolcmp1(nodea,nodeb){returna.x<b.x;}boolcmp2(nodea,nodeb){returna.y<b.y;}voidmaintain(intx){L[x]=R[x]=s[x].x;D[x]=U[x]=s[x].y;if(lc[x])L[x]=min(L[x],L[lc[x]]),R[x]=max(R[x],R[lc[x]]),D[x]=min(D[x],D[lc[x]]),U[x]=max(U[x],U[lc[x]]);if(rc[x])L[x]=min(L[x],L[rc[x]]),R[x]=max(R[x],R[rc[x]]),D[x]=min(D[x],D[rc[x]]),U[x]=max(U[x],U[rc[x]]);}intbuild(intl,intr){if(l>r)return0;if(l==r){maintain(l);returnl;}intmid=(l+r)>>1;doubleavx=0,avy=0,vax=0,vay=0;// average variancefor(inti=l;i<=r;i++)avx+=s[i].x,avy+=s[i].y;avx/=(double)(r-l+1);avy/=(double)(r-l+1);for(inti=l;i<=r;i++)vax+=(s[i].x-avx)*(s[i].x-avx),vay+=(s[i].y-avy)*(s[i].y-avy);if(vax>=vay)d[mid]=1,nth_element(s+l,s+mid,s+r+1,cmp1);elsed[mid]=2,nth_element(s+l,s+mid,s+r+1,cmp2);lc[mid]=build(l,mid-1),rc[mid]=build(mid+1,r);maintain(mid);returnmid;}doublef(inta,intb){doubleret=0;if(L[b]>s[a].x)ret+=(L[b]-s[a].x)*(L[b]-s[a].x);if(R[b]<s[a].x)ret+=(s[a].x-R[b])*(s[a].x-R[b]);if(D[b]>s[a].y)ret+=(D[b]-s[a].y)*(D[b]-s[a].y);if(U[b]<s[a].y)ret+=(s[a].y-U[b])*(s[a].y-U[b]);returnret;}voidquery(intl,intr,intx){if(l>r)return;intmid=(l+r)>>1;if(mid!=x)ans=min(ans,dist(x,mid));if(l==r)return;doubledistl=f(x,lc[mid]),distr=f(x,rc[mid]);if(distl<ans&&distr<ans){if(distl<distr){query(l,mid-1,x);if(distr<ans)query(mid+1,r,x);}else{query(mid+1,r,x);if(distl<ans)query(l,mid-1,x);}}else{if(distl<ans)query(l,mid-1,x);if(distr<ans)query(mid+1,r,x);}}intmain(){cin.tie(nullptr)->sync_with_stdio(false);cin>>n;for(inti=1;i<=n;i++)cin>>s[i].x>>s[i].y;build(1,n);for(inti=1;i<=n;i++)query(1,n,i);cout<<fixed<<setprecision(4)<<sqrt(ans)<<'\n';return0;}
#include<algorithm>#include<cstring>#include<iostream>#include<queue>usingnamespacestd;constexprintMAXN=100010;longlongn,k;priority_queue<longlong,vector<longlong>,greater<longlong>>q;structnode{longlongx,y;}s[MAXN];boolcmp1(nodea,nodeb){returna.x<b.x;}boolcmp2(nodea,nodeb){returna.y<b.y;}longlonglc[MAXN],rc[MAXN],L[MAXN],R[MAXN],D[MAXN],U[MAXN];voidmaintain(intx){L[x]=R[x]=s[x].x;D[x]=U[x]=s[x].y;if(lc[x])L[x]=min(L[x],L[lc[x]]),R[x]=max(R[x],R[lc[x]]),D[x]=min(D[x],D[lc[x]]),U[x]=max(U[x],U[lc[x]]);if(rc[x])L[x]=min(L[x],L[rc[x]]),R[x]=max(R[x],R[rc[x]]),D[x]=min(D[x],D[rc[x]]),U[x]=max(U[x],U[rc[x]]);}intbuild(intl,intr){if(l>r)return0;intmid=(l+r)>>1;doubleav1=0,av2=0,va1=0,va2=0;// average variancefor(inti=l;i<=r;i++)av1+=s[i].x,av2+=s[i].y;av1/=(r-l+1);av2/=(r-l+1);for(inti=l;i<=r;i++)va1+=(av1-s[i].x)*(av1-s[i].x),va2+=(av2-s[i].y)*(av2-s[i].y);if(va1>va2)nth_element(s+l,s+mid,s+r+1,cmp1);elsenth_element(s+l,s+mid,s+r+1,cmp2);lc[mid]=build(l,mid-1);rc[mid]=build(mid+1,r);maintain(mid);returnmid;}longlongsq(longlongx){returnx*x;}longlongdist(inta,intb){returnmax(sq(s[a].x-L[b]),sq(s[a].x-R[b]))+max(sq(s[a].y-D[b]),sq(s[a].y-U[b]));}voidquery(intl,intr,intx){if(l>r)return;intmid=(l+r)>>1;longlongt=sq(s[mid].x-s[x].x)+sq(s[mid].y-s[x].y);if(t>q.top())q.pop(),q.push(t);longlongdistl=dist(x,lc[mid]),distr=dist(x,rc[mid]);if(distl>q.top()&&distr>q.top()){if(distl>distr){query(l,mid-1,x);if(distr>q.top())query(mid+1,r,x);}else{query(mid+1,r,x);if(distl>q.top())query(l,mid-1,x);}}else{if(distl>q.top())query(l,mid-1,x);if(distr>q.top())query(mid+1,r,x);}}intmain(){cin>>n>>k;k*=2;for(inti=1;i<=k;i++)q.push(0);for(inti=1;i<=n;i++)cin>>s[i].x>>s[i].y;build(1,n);for(inti=1;i<=n;i++)query(1,n,i);cout<<q.top()<<endl;return0;}