#include <stdio.h>
#include<algorithm>
#define MAX 500005
using namespace std;
int stone[MAX];
intl,n,m,i,j;
int success(int jump){
int cnt=0;
i=1;
j=0;
if(jump*m<l)
return0;
while(i<=n+1){
cnt++;
if(jump<stone[i]-stone[j])
return 0;
while(jump>=stone[i]-stone[j]&&i<=n+1)
i++;
j=i-1;
}
if(cnt>m)
return0;
return 1;
}
int judge(){
int left=0,right=l,mid;
while(left<=right){
mid=(left+right)>>1;
if(success(mid))
right=mid-1;
else
left=mid+1;
}
return left;
}
int main(){
while(~scanf("%d%d%d",&l,&n,&m)){
stone[0]=0;
for(i=1;i<=n;i++)
scanf("%d",&stone[i]);
stone[n+1]=l;
sort(stone,stone+n+2);
printf("%d\n",judge());
}
return 0;
}
The Frog’s Games(hdu 4004)
最新推荐文章于 2019-03-17 16:31:21 发布