❤ • 4天前
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 50001;
int stone[MAXN], a, n, m;
bool check(int d) {
int p = 0, ans = 0;
for (int i = 1; i <= n; i++) {
if (stone[i] - p < d)
ans++;
else
p = stone[i];
}
if (ans <= m)
return true;
else
return false;
}
int main() {
cin >> a >> n >> m;
for (int i = 1; i <= n; i++)
cin >> stone[i];
stone[++n] = a;
int l = 0, r = a, mid;
while (l < r) {
mid = (l + r + 1) / 2;
if (check(mid))
l = mid;
else
r = mid - 1;
}
cout << l;
return 0;
}
评论:
请先登录,才能进行评论