提交时间:2024-01-25 08:00:08
运行 ID: 127133
#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; }