#include<cstdio>
#include<cstring>
using namespace std;
const int N=1e6+5;
long long a[N];
long long Sum[N];
int main(){
int T,n;
long long sum,t;
scanf("%d",&T);
while(T--){
sum=0,t=0,Sum[0]=0;
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%lld",&a[i]);
Sum[i]=Sum[i-1]+a[i];//加一块肯定int不够
}
for(int i=1;i<=n-1;i++){
t=sum;
sum=Sum[i]*114+(Sum[n]-Sum[i])*514;
// for(int j=1;j<=i;j++){
// sum+=a[j]*114;
// }
// for(int j=i+1;j<=n;j++){
// sum+=a[j]*514;
// }超时
//max存到sum里
if(t>sum){
sum=t;
}
}
memset(Sum,0,sizeof Sum);
printf("%lld\n",sum);
}
return 0;
}
教训:写的时候脑子瓦特了,忘记每次比完最大值之后让sum归零了.
疑惑:a[N]为什么要用long long 不用可以过90%的样例,各位会的可以解答一下