提交时间:2024-05-08 15:57:52

运行 ID: 29474

#include<bits/stdc++.h> using namespace std; #define int long long #define db long double int n,m,x[205],y[205]; void read(int &x){ x=0; bool f=0; char c=getchar(); while(!isdigit(c)){ if(c=='-')f=1;c=getchar(); } while(isdigit(c)){ x=(x<<3)+(x<<1)+(c^48); c=getchar(); } if(f)x*=-1; return; } db dis(int _x,int _y,int __x,int __y){ return sqrtl((_x-__x)*(_x-__x)+(_y-__y)*(_y-__y)); } namespace subtask1{ bool chose[20]; db ans=0; void getans(){ db k=0; for(int i=1;i<=n;i++){ for(int j=i+1;j<=n;j++){ if(chose[i]&&chose[j]) k=max(k,dis(x[i],y[i],x[j],y[j])); } } ans=max(ans,k); } void dfs(int now,int ardc){ if(ardc==m){ getans(); return; } if(now>n)return; if(n-now+1<m-ardc)return; chose[now]=1; dfs(now+1,ardc+1); chose[now]=0; dfs(now+1,ardc); } void slv(){ dfs(1,0); printf("%.6Lf",ans); } } namespace subtask2{ db ans=1e18; void slv(){ for(int i=1;i<=n;i++){ for(int j=i+1;j<=n;j++){ ans=min(ans,dis(x[i],y[i],x[j],y[j])); } } printf("%.6Lf",ans); return; } } namespace subtask3{ db ans=1e18; void slv(){ for(int i=1;i<=n;i++){ for(int j=i+1;j<=n;j++){ if(dis(x[i],y[i],x[j],y[j])>=ans)continue; for(int k=j+1;k<=n;k++){ ans=min(ans,max({dis(x[i],y[i],x[j],y[j]),dis(x[i],y[i],x[k],y[k]),dis(x[k],y[k],x[j],y[j])})); } } } printf("%.6Lf",ans); return; } } signed main(){ // ios::sync_with_stdio(0); //auto i1=freopen("b.in","r",stdin); //auto i2=freopen("b.out","w",stdout); read(n),read(m); // cout<<n<<" "<<m<<endl; for(int i=1;i<=n;i++){ read(x[i]),read(y[i]); //cout<<x[i]<<" "<<y[i]<<endl; } if(m==2){ subtask2::slv(); } else if(m==3){ subtask3::slv(); } else { subtask1::slv(); } return 0; }