C++ 代码
#include <bits/stdc++.h>
#define ll long long
using namespace std;
int n, k;
ll a[100005], b[100005], s[100005];
int main() {
cin >> n >> k;
for(int i = 1; i <= n; i++) { cin >> a[i]; a[i] += a[i - 1]; }
for(int i = 1; i <= n; i++) { cin >> b[i]; }
for(int i = 1; i <= n; i++) {
if(b[i]) s[i] = a[i] - a[i - 1];
s[i] += s[i - 1];
}
ll ans = 0;
for(int i = k; i <= n; i++) {
ll tmp = s[i - k] + a[i] - a[i - k] + s[n] - s[i];
ans = max(ans, tmp);
}
cout << ans << endl;
return 0;
}
/*
0 2 5 4
0 1 2 2
*/
时间复杂度
O(n)