1 条题解
-
0
#include <iostream> #include <vector> #include <algorithm> using namespace std; bool check(int mid, int n, int m, vector<int>& rocks) { int cur = 0; int removed = 0; for (int rock : rocks) { if (rock - cur < mid) { removed++; } else { cur = rock; } } return removed <= m; } int main() { int l, n, m; cin >> l >> n >> m; vector<int> rocks(n); for (int i = 0; i < n; i++) { cin >> rocks[i]; } int left = 1, right = l; while (left < right) { int mid = (left + right + 1) / 2; if (check(mid, n, m, rocks)) { left = mid; } else { right = mid - 1; } } cout << left << endl; return 0; }
信息
- ID
- 387
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 4
- 标签
- 递交数
- 39
- 已通过
- 18
- 上传者