代码:
#include<bits/stdc++.h>
using namespace std;
long long l,r,mid;
long long i,L,n,k,a[100005],ans;
bool check(int diff)
{
int i,cnt=0;
for(i=1;i<n;i++)
if(diff!=0)
if((a[i]-a[i-1])%diff==0)
cnt+=(a[i]-a[i-1])/diff-1;
else
cnt+=(a[i]-a[i-1])/diff;
return cnt<=k;
}
int main(){
scanf("%lld %lld %lld",&L,&n,&k);
for(i=0;i<n;i++)
scanf("%lld",&a[i]);
sort(a,a+n);
l=0;
r=L;
ans=L;
while(l<=r)
{
mid=(l+r)>>1;
if(check(mid))
r=mid-1,ans=mid;
else
l=mid+1;
}
printf("%lld",ans);
return 0;
}
check函数里面的if(diff!=0)加了WA,不加RE。蒟蒻不知如何解决,在此求助DaLao。
加了if(diff!=0)
不加if