思路

很明显,我们只需要先预处理出来a数组的前缀和sum,然后暴力枚举,分别乘以风和雨的权值,res每次取最大值即可

注意数据溢出,开long long

accode

#include<iostream>
#include<algorithm>
#include<cstring>

#define int long long 

using namespace std;
const int N=1e6+10;

int t, n, a[N], k;
int sum[N];

signed main(){
    cin>>t;
    while(t--){
        cin>>n;
        for(int i = 1; i <= n; i++){
            cin>>a[i];
            sum[i] = sum[i-1] + a[i];
        }
        int ans = 0,tmp;
        for(int i = 1; i <=n; i++){
            tmp = sum[i]*114 + (sum[n]-sum[i])*514;
            ans = max(tmp, ans);
        }
        cout<<ans<<endl;
    }
}