题解
2025-07-25 09:03:53
发布于:江苏
13阅读
0回复
0点赞
#include<iostream>
using namespace std;
int L,n,m,a[50010];
bool check(int x){
int cnt=0,idx=0;
for(int i=1;i<=n+1;i++){
if(a[i]-idx<x){
cnt++;
}else{
idx=a[i];
}
}
return cnt<=m;
}
int upper_bs(int l,int r){
int ans=0;
while(l<=r){
int mid=l+r>>1;
if(check(mid)!=0){
ans=mid;
l=mid+1;
}else{
r=mid-1;
}
}
return ans;
}
int main(){
cin>>L>>n>>m;
a[0]=0,a[n+1]=L;
for(int i=1;i<=n;i++){
cin>>a[i];
}
cout<<upper_bs(1,L);
return 0;
}
这里空空如也
有帮助,赞一个