AcWing 519. 跳石头
原题链接
中等
作者:
积极营业ing
,
2024-04-05 15:46:01
,
所有人可见
,
阅读 4
#include <bits/stdc++.h>
using namespace std;
const int N = 50010;
int len,n,m;
int arr[N];
bool check(int dist)
{
int last = 0,cnt = 0;
for(int i = 1;i <= n;i++){
if(arr[i] - last >= dist) last = arr[i];
else cnt++;
}
if(cnt > m) return false;
else return true;
}
int main()
{
cin >> len >> n >> m;
for(int i = 1;i <= n;i++) cin >> arr[i];
arr[++n] = len;
int l = 0,r = len;
while(l < r)
{
int mid = (l + r + 1) >> 1;
if(check(mid)) l = mid;
else r = mid - 1;
}
cout << l;
return 0;
}