Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
127133 | 廖悦扬 | 跳石头 | C++ | 通过 | 100 | 7 MS | 652 KB | 686 | 2024-01-25 08:00:08 |
#include <bits/stdc++.h> #define int long long using namespace std; int l, n, m, d[50005]; bool check(int dist) { int cur = 0, res = 0; for (int i=1; i<=n+1; i++) { if (d[i] - d[cur] < dist) res++; else cur = i; } if (res > m) return false; else return true; } signed main() { scanf("%lld%lld%lld", &l, &n, &m); for (int i=1; i<=n; i++) scanf("%lld", &d[i]); int left = 1, right = l; d[n+1] = l; while (left < right) { int mid = (left + right + 1) >> 1; if (check(mid)) left = mid; else right = mid-1; } printf("%lld", left); return 0; }