rt.
参考第一篇题解写的。
#include<bits/stdc++.h>
using namespace std;
int l,m,n,i,lft,rt,mid,stone[500005];
bool check(int mid)
{
int move=0,num=0,now=0;
while(num<n+1)
{
i++;
if(stone[i]-stone[now]<mid)
move++;
else
now=i;
}
return move<=mid;
}
int main()
{
cin>>l>>m>>n;
for(i=1;i<=n;i++)
{
cin>>stone[i];
rt+=stone[i];
lft=max(lft,stone[i]);
}
while(lft<rt)
{
mid=(lft+rt)/2;
if(check(mid))
lft=mid+1;
else
rt=mid-1;
}
cout<<lft;
return 0;
}