真心不知道咋改了……#2的数据点下下来运行结果4459,正确答案4460,不知道为啥……
代码(不好看请见谅):
#include <iostream>
using namespace std;
const int MAXN = 50010;
long long rocks[MAXN];
long long d, n, m;
bool check(int x) {
int cur = 0, nxt = 1, cnt = 0;
while (nxt < n + 1) {
if (rocks[nxt] - rocks[cur] < x) cnt++;
else cur = nxt;
nxt++;
}
return cnt <= m;
}
int binary_search(int l, int r) {
int ans;
while (l <= r) {
long long mid = (l + r) >> 1;
if (check(mid)) l = mid + 1, ans = mid;
else r = mid - 1;
}
return ans;
}
int main() {
cin >> d >> n >> m;
for (int i = 0; i < n; i++) cin >> rocks[i];
rocks[n + 1] = d;
cout << binary_search(1, d) << endl;
return 0;
}