文章
171
粉丝
165
获赞
73
访问
90.9k
#include <bits/stdc++.h>
using namespace std;
int n, L;
vector<int> A;
// 判断平均值 mid(已 ×1000)是否可行
bool check(int mid) {
static long long s[100005];
s[0] = 0;
for (int i = 1; i <= n; i++) {
s[i] = s[i - 1] + A[i] * 1000LL - mid;
}
long long min_pre = 0;
for (int i = L; i <= n; i++) {
min_pre = min(min_pre, s[i - L]);
if (s[i] - min_pre >= 0)
return true;
}
return false;
}
int main() {
cin >> n >> L;
A.resize(n + 1);
for (int i = 1; i <= n; i++)
cin >> A[i];
int l = 0, r = 1000 * 100000; // 最大值范围
int ans = 0;
while (l <= r) {
int mid = (l + r) / 2;
if (check(mid)) {
ans = mid;
l = mid + 1;
} else {
r = mid - 1;
}
}
cout << ans << endl;
return 0;
}
登录后发布评论
暂无评论,来抢沙发