题述
输入输出
样例
代码
#include<bits/stdc++.h>
using namespace std;
int n,k;
int x[(int)5e4+10];
bool check(int R)
{
int s=0,now=INT_MIN;
for(register int i=1;i<=n;i++)
{
if(now<x[i]-R)
{
s++;
now=x[i]+R;
//更新当前范围
if(s>k)return false;
//如果超过了限定数,那么就一定pass了
}
}
return true;
//到最后都没pass,说明成功爆破
}
int main()
{
scanf("%d%d",&n,&k);
for(register int i=1;i<=n;i++)
{
scanf("%d",&x[i]);
}
sort(x+1,x+n+1);
int l=0,r=x[n];
while(l<=r)
{//二分模板
int mid=l+r>>1;
if(check(mid))
{
r=mid-1;
}
else
{
l=mid+1;
}
}
printf("%d\n",l);
return 0;
}