80分求助
麻烦各位大佬帮我看看这段代码哪里有错误。这个是#2和#10测试点出错。
#include<iostream>
#include<algorithm>
using namespace std;
#define size 100000
int L,N,K;
int d[size+10];
bool P(int );
int main(){
cin>>L>>N>>K;
for(int i=1;i<=N;i++)cin>>d[i];
sort(d+1,d+N+1);
int L=0,R=2*d[N],mid,ans;
while(L<=R){
if(P(mid=L+R>>1))
ans=mid,R=mid-1;
else
L=mid+1;
}
cout<<ans<<endl;
return 0;
}
bool P(int x){
if(x==0) return false;
int sp=0,ind=2,ans=0;
while(ind<=N){
sp=d[ind]-d[ind-1];
if(sp<=x){
ind++;
}else if(sp>x){
int num=sp/x;
ans+=num;
if(ans>K) return false;
else if(ans<=K) ind++;
}
}
return true;
}