Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
37546 Sakuzyh 【S】T1 C++ 解答错误 5 181 MS 2996 KB 1139 2025-04-06 14:43:04

Tests(1/20):


// Author: Aquizahv #include <bits/stdc++.h> #define ll long long using namespace std; const int N = 1e5 + 5; int n, k, a[N]; ll sum[N], pre[N], suf[N]; void solve() { scanf("%d%d", &n, &k); for (int i = 1; i <= n; i++) { scanf("%d", a + i); sum[i] = sum[i - 1] + a[i]; } memset(pre, 0, sizeof(pre)); memset(suf, 0, sizeof(suf)); for (int i = 1; i <= n; i++) pre[i] = max(pre[i - 1], pre[i - 1] + a[i]); for (int i = n; i >= 1; i--) suf[i] = max(suf[i + 1], suf[i + 1] + a[i]); ll mx = 0; // int mxi = -1; for (int i = 1; i + k - 1 <= n; i++) mx = max(mx, pre[i - 1] + (sum[i + k - 1] - sum[i - 1]) + suf[i + k]); // cout << mxi << endl; // if (mxi != -1) // { // for (int i = mxi - 1; i >= 1; i--) // a[i] = min(0, a[i]); // for (int i = mxi + k; i <= n; i++) // a[i] = min(0, a[i]); // } printf("%lld\n", mx); } int main() { int T; cin >> T; while (T--) solve(); return 0; } /* k = 4 0 0 0 1 0 0 0 0 1 1 1 0 */


测评信息: