#include <bits/stdc++.h>
using namespace std;
int l, n, k;
int a[100010];
int check(int d) {
int ct = 0;
for(int i =1;i<n;i++){
int len = a[i+1] - a[i];
if(len > d){
ct += len / d;
if(len % d == 0){
ct--;
}
}
}
if(ct <= k)return 1;
else return 0;
}
int main() {
cin >> l >> n >> k;
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
int left = 1;
int right = l;
while (left < right) {
int mid = (left + right) >> 1;
if (check(mid)) {
right = mid;
} else {
left = mid + 1;
}
}
cout << right;
}
有一个坑点,就是距离能被空旷度整除时, 所加的路障的就-1
如 2 8 d = 3 . (8-2)/3 =2 ,但实际上只要在5 这个位置加一个路障就ok
不用双指针,其实就相邻枚举,学双指针学傻了