信息学奥赛一本通(C++版)在线评测系统 (ssoier.cn)
#include<iostream>
#include<cstdio>
using namespace std;
int leng,n,m,a[50002];
bool check(int x){
int last=0;
int sum=0;
for(int i=1;i<=n;i++){
if(a[i]-last>=x){
last=a[i];
}else{
sum++;
}
}
if(leng-last<x){
sum++;
}
return sum<=m;
}
int main(){
cin>>leng>>n>>m;
int l=1,r=leng;
for(int i=1;i<=n;i++){
cin>>a[i];
}
while(r>l){
int mid=(l+r+1)>>1;
if(check(mid)){
l=mid;
}else{
r=mid-1;
}
}
cout<<l;
return 0;
}
点个赞