题意:给出一串数,可以给它连续区间乘一个值,问区间最大和
思路:分三种情况 f[3],f[0]表示不选或者选择a,f[1]表示选择连续的区间乘以x,f[2]表示选择乘完x后面的区间。
#include<bits/stdc++.h>
using namespace std;
long long n, x;
long long f[3], ans;
int main() {
cin >> n >> x;
for(long long i = 0, a; i < n; i++) {
cin >> a;
f[0] = max(0ll, a + f[0]);
f[1] = max(f[0], f[1] + a * x);
f[2] = max(f[1], f[2] + a);
ans = max(f[2], ans);
}
cout << ans;
return 0;
}