原题
二分
#include<cstdio>
int l,n,m,len;
int a[50005]={0};
int check(int x)//本题的核心
{
int tem=0;
int sum=0;
for(int i=1;i<=n;i++)
{
if(a[i]-tem<x)
sum++;
else
tem=a[i];
}
if(sum>m) return 0;//二分结果较大,二分范围缩小至(l,mid-1)
return 1;//二分结果较小,二分范围缩小至(mid-1,r)
}
int main()
{
int mid;
scanf("%d%d%d", &len, &n, &m);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);//防止数据过大在输入上浪费时间
a[n+1]=len;
int l=1,r=len;
while(l<=r)
{
mid =(l+r)/2;
if(check(mid)) l=mid+1;
else r=mid-1;
}
printf("%d",l-1);//答案就是l-1
return 0;
}