Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
109811 | 黄一航 | 跳石头 | C++ | 通过 | 100 | 16 MS | 456 KB | 516 | 2023-11-11 10:57:07 |
#include <bits/stdc++.h> using namespace std; int L,n,m; int a[50005]; bool chk(int dist) { int cnt = 0,lst = 0; for (int i = 1; i <= n; i++) { if (a[i] - lst < dist) cnt++; else lst = a[i]; } if (L - lst < dist) cnt++; return cnt <= m; } int main() { cin >> L >> n >> m; for (int i = 1; i <= n; i++) cin >> a[i]; int l = 1,r = L + 1,mid; while (l + 1 < r) { mid = (l + r) / 2; if (chk(mid)) l = mid; else r = mid; } printf("%d\n",l); return 0; }