有手就行- 0 -.
二分答案+排序ck即可.
代码如下:
#include <bits/stdc++.h> using namespace std; const int N=5e4+3; int x[N],n,R; bool ck(int k)//看下这个值是否可行. { int res=0;int jl=2*k; for(int i=1;i<=n;) { int j=i; while(x[j]-x[i]<=jl&&j!=n+1) { j++; } i=j; res++; } return R>=res; } int main() { cin>>n>>R; for(int i=1;i<=n;i++) cin>>x[i]; sort(x+1,x+1+n); int ans=2e9; int l=1,r=2e9; while(l<=r) { int mid=(l+r)>>1; if(ck(mid)) { r=mid-1; ans=min(ans,mid); } else l=mid+1; } cout<<ans<<'\n'; return 0; }