#include<bits/stdc++.h>
using namespace std;
int a[50005];
long long l,n,m;
bool check(int mid){
int cnt=0;
int i=0;
int now=0;
while(i<n+1){
i++;
if(a[i]-a[now]<mid) cnt++;
else now=i;
}
if(cnt>m) return false;
return true;
}
int main(){
scanf("%ld%ld%ld",&l,&n,&m);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
}
int ri=l,li=0,mid,ans;
while(li<ri){
mid=(li+ri)/2;
if(check(mid)) {
li=mid+1;ans=mid;
}
else ri=mid;
}
cout<<ans;
return 0;
} ```
还是不明白二分到底怎么来判断循环判断和边界