最佳牛围栏

 

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 const int N = 100010;
 4 int n, m;
 5 int a[N];
 6 double sum[N];
 7 bool check(double mid) {
 8     for (int i = 1; i <= n; i++) {
 9         sum[i] = sum[i - 1] + a[i] - mid;
10     }
11     double minn = 0;
12     for (int i = 0, j = m; j <= n; i++, j++) {
13         minn = min(minn, sum[i]);
14         if (sum[j] >= minn) {
15             return true;
16         }
17     }
18     return false;
19 }
20 int main() {
21     cin >> n >> m;
22     for (int i = 1; i <= n; i++) {
23         cin >> a[i];
24     }
25     double l = 0, r = 2000;
26     while (r - l > 1e-5) {
27         double mid = (l + r) / 2;
28         if (check(mid)) {
29             l = mid;
30         } else {
31             r = mid;
32         }
33     }
34     cout << (int)(r * 1000) << endl;
35     return 0;
36 }

 

posted @ 2020-11-09 14:31  kyk333  阅读(91)  评论(0)    收藏  举报