题解
2025-05-17 13:35:37
发布于:浙江
4阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int a[N],n,k;
bool check(int mid){
int sum=1,now=1;//上一个住牛的牛棚位置
for(int i=2;i<=n;i++){
if(a[i]-a[now]>=mid){
sum++;
now=i;
}
}
if(sum>=k){
return 1;
}else{
return 0;
}
}
int main(){
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+1+n);
int l=1,r=1e8,ans=0;
while(l<=r){
int mid=(l+r)/2;
if(check(mid)){
ans=mid;
l=mid+1;
}else{
r=mid-1;
}
}
cout<<ans;
return 0;
}
这里空空如也
有帮助,赞一个