2 条题解

  • 0
    @ 2025-3-22 14:33:48

    #include #include

    using namespace std;

    int arr[100005]; double sum[100005]; int n, F;

    bool fun(double aver) { for(int i = 1; i <= n; i++) { sum[i] = sum[i - 1] + arr[i] - aver;
    } double minn = 1e9, ans = -1e9; for(int i = F; i <= n; i++) { minn = min(minn, sum[i - F]);
    ans = max(ans, sum[i] - minn); } return ans >= 0; }

    int main() { scanf("%d %d", &n, &F); for(int i = 1; i <= n; i++) { scanf("%d", &arr[i]); } double l = -1e6, r = 1e6; while(r - l > 1e-5) { double mid = (l + r) / 2.0; if(fun(mid)) { l = mid; } else { r = mid; } } cout << (long long)(r * 1000) << endl; return 0; }

    信息

    ID
    168
    时间
    1000ms
    内存
    128MiB
    难度
    4
    标签
    递交数
    43
    已通过
    20
    上传者