Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
109451 | 曾煦翔 | 跳石头 | C++ | 通过 | 100 | 14 MS | 452 KB | 783 | 2023-11-08 18:56:03 |
#include <bits/stdc++.h> using namespace std; int a[500010]; int d , n , m; bool two_find(int x) { int tot = 0; int i = 0; int now = 0; while (i < n + 1) { i++; if (a[i] - a[now] < x) tot++; else now = i; } if (tot > m) return false; else return true; } int main() { cin >> d >> n >> m; int cnt = 0; for (int i = 1;i <= n;i++) cin >> a[i]; int l , r , mid; a[n + 1] = d; l = 1; r = d; while (l <= r) { mid = (l + r) / 2; if (two_find(mid)) { cnt = mid; l = mid + 1; } else r = mid - 1; } cout << cnt << endl; return 0; }