有手就行- 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;
}

京公网安备 11010502036488号