提交时间:2024-01-24 23:15:32
运行 ID: 127118
#include <iostream> using namespace std; int lst[50010]; int d, n, m, num; bool judge(int x) { int sum = 0, i = 0, N = 0; while (i < n + 1) { i++; if (lst[i] - lst[N] < x) sum++; else N = i; } if (sum > m) return 0; else return 1; } int main() { cin >> d >> n >> m; for (int i = 1; i <= n; i++) cin >> lst[i]; lst[n + 1] = d; int l = 1, r = d, mid; while (l <= r) { mid = (l + r) / 2; if (judge(mid)) { num = mid; l = mid + 1; } else r = mid - 1; } cout << num; }