1 条题解
-
0
#include <bits/stdc++.h> using namespace std; const int MAXN = 50010; int L,N,M; int D[MAXN]; bool check(int d) { int cnt = 0; int last = 0; for(int i = 1;i<=N+1;i++) { int current = (i == N+1) ? L : D[i]; if(current - last<d) { cnt ++; } else { last = current; } if(cnt>M) return false; } return true; } int main() { cin>>L>>N>>M; for(int i = 1;i<=N;i++) { cin>>D[i]; } int left = 0,right = L; int ans = 0; while(right-left>=0) { int mid = (right-left)/2+left; if(check(mid)) { ans = mid; left = mid+1; } else { right = mid-1; } } cout << ans << endl; return 0; }
- 1
信息
- ID
- 6713
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 3
- 标签
- 递交数
- 52
- 已通过
- 26
- 上传者