小白92分,求解,第#13测试点read6,expect7
  • 板块P1404 平均数
  • 楼主XZH_jesse
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/4/2 20:38
  • 上次更新2024/4/2 22:44:38
查看原帖
小白92分,求解,第#13测试点read6,expect7
738013
XZH_jesse楼主2024/4/2 20:38
#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

const int N = 100010;

int n, m;
long long w[N], f[N];

bool check(int x)
{
    for (int i = 1; i <= n; i++) f[i] = w[i] - x;
    for (int i = 1; i <= n; i++) f[i] = f[i] + f[i - 1];
    int mini = 1e9;
    for (int i = m; i <= n; i++) {
        mini = mini > f[i - m] ? f[i - m] : mini;
        
        if (f[i] - mini >= 0) return true;
    }
    return false;
}

int find()
{
    int l = 0, r = 2000010;
    
    while (l + 1 < r) {
        int mid = l + r >> 1;
        if (check(mid)) l = mid;
        else r = mid;
    }
    
    return l;
}

int main()
{
    cin >> n >> m;
    for (int i = 1; i <= n; i++) cin >> w[i], w[i] *= 1000;
    printf("%d", find());
    
    return 0;
}
2024/4/2 20:38
加载中...