二分答案
2025-06-07 11:29:59
发布于:广东
6阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
long long n,c,a[100005];
bool check(int x){
int now=a[0],cnt=1;
for(int i=1;i<n;i++){
if(a[i]-now>=x){
now=a[i];
cnt++;
}
}
return cnt>=c;
}
int main(){
cin>>n>>c;
long long l=0,r=0,ans=0;
for(int i=0;i<n;i++){
cin>>a[i];
r=max(r,a[i]);
}
sort(a,a+n);
while(l<=r){
long long mid=(l+r)/2;
if(check(mid)){
ans=mid;
l=mid+1;
}else{
r=mid-1;
}
}
cout<<ans;
return 0;
}
这里空空如也
有帮助,赞一个