70分
#include<bits/stdc++.h>
using namespace std;
const int N=5e4+1;
int l,n,m,a[N];
bool check(int x){
int now=0,cnt=0;
for(int i=1;i<=n+1;i++){
if(a[i]-a[now]<x)
cnt++;
else
now=i;
}
if(cnt<=m)
return 1;
else
return 0;
}
int main(){
cin>>l>>n>>m;
a[n+1]=l;
for(int i=1;i<=n;i++)
cin>>a[i];
int L=1,R=l,ans=0;
while(L<=R){
int mid=L+(R-L+1)/2;
if(check(mid)){
L=mid+1;
ans=mid;
}
else
R=mid-1;
}
cout<<ans;
return 0;
}
100分
#include<bits/stdc++.h>
using namespace std;
const int N=5e4+1;
int a[N],n,m,L;
bool check(int x){
int now=0,cnt=0;
for(int i=1;i<=n+1;i++){
if(a[i]-a[now]<x)
cnt++;
else
now=i;
}
if(cnt<=m)
return 1;
else
return 0;
}
int main(){
cin>>L>>n>>m;
a[n+1]=L;
for(int i=1;i<=n;i++)
cin>>a[i];
int r=L,l=1,ans=0;
while(l<=r){
int mid=l+(r-l+1)/2;
if(check(mid)){
l=mid+1;
ans=mid;
}
else
r=mid-1;
}
cout<<ans;
return 0;
}
我要崩了!