[NOIP2015]跳石头
#include <bits/stdc++.h>
using namespace std;
const int N = 50010;
long long len;
int n, m;
long long a[N];
bool check(long long mid){
long long b = 0;
int res = 0;
for(int i = 0; i <= n; ++i){
if(a[i] - b < mid) ++res;
else b = a[i];
}
return res <= m;
}
signed main(){
cin >> len >> n >> m;
for(int i = 0; i < n; ++i) cin >> a[i];
a[n] = len;
long long l = 1, r = len;
// cout << r << endl;
while(l < r){
long long mid = (l + r + 1) >> 1;
if(check(mid)) l = mid;
else r = mid - 1;
}
cout << l << endl;
return 0;
}