#include <bits/stdc.h>
const int maxn 500010;
using namespace std;
int a[maxn];
int l,n,m;//起点到终点的距离,起点和终点之间的岩石数,至多移走的岩石数
bool check(int val)
{int cnt 0,pre 0;//当前位置,已经移走的石头数目…
#include<bits/stdc++.h>constint maxn =500010;usingnamespace std;int a[maxn];int l,n,m;//起点到终点的距离,起点和终点之间的岩石数,至多移走的岩石数boolcheck(int val){int cnt =0,pre =0;//当前位置,已经移走的石头数目for(int i =1;i < n +1;i++){if(a[i]- a[pre]< val)cnt++;else pre = i;if(cnt > m)returnfalse;}return cnt <= m;}intmain(){int ans;scanf("%d%d%d",&l,&n,&m);for(int i =1;i <= n;i++)scanf("%d",&a[i]);
a[n +1]= l;int left =0,right = l;while(left <= right){int mid =(left + right)/2;if(check(mid))left = mid +1,ans = mid;else right = mid -1;}
cout<<ans<<endl;return0;}
共有条评论 网友评论