1 条题解
-
1
#include <iostream> #include <cmath> using namespace std; const int N = 100010; int n, m; int cows[N]; double sum[N]; bool check(double avg) { for (int i = 1; i <= n; i ++ ) sum[i] = sum[i - 1] + cows[i] - avg; double mins = 0; for (int i = m, j = 0; i <= n; i ++, j ++ ) { mins = min(mins, sum[j]); if (sum[i] - mins >= 0) return true; } return false; } int main() { cin >> n >> m; double l = 0, r = 0; for (int i = 1; i <= n; i ++ ) { cin >> cows[i]; r = max(r, (double)cows[i]); } while (r - l > 1e-12) { double mid = (l + r) / 2; if (check(mid)) l = mid; else r = mid; } printf("%d\n", (int)(r * 1000 + 1e-3)); return 0; }
信息
- ID
- 5552
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者