求大佬看看是check函数错了还是哪里错了
#include<iostream>
#define N 100005
using namespace std;
bool check(int p[],int mid,int n,int k){
int count=0,t=0;
for(int i=1;i<n;i++){
if(p[i]-t<=mid){
t=p[i];
}else{
while(t+mid<p[i]){
t=t+mid;
count++;
}
}
}
if(count<=k) return 1;
else return 0;
}
int main(){
int len,n,k,max=0;
cin>>len>>n>>k;
int p[N];
for(int i=0;i<n;i++){
cin>>p[i];
if(i>=1){
if(p[i]-p[i-1]>max) max=p[i]-p[i-1];
}
}
int l=1,r=len;
while(l<r){
int mid=(l+r)/2;
if(check(p,mid,n,k)) r=mid;
else l=mid+1;
}
cout<<l<<endl;
return 0;
}