
WA code:
#include<bits/stdc++.h>
using namespace std;
int n;
int a[100];
int dp[100][100];
int maxn,minn;
int a1,a2,a3,a4,a11,a22,a33,a44;
int main() {
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
dp[1][0]=dp[1][1]=a[1];
for(int i=2;i<=n;i++){
if(a[i]!=0){
a1=dp[i-1][0]+a[i];
a11=dp[i-1][1]+a[i];
a2=dp[i-1][0]-a[i];
a22=dp[i-1][1]-a[i];
a3=dp[i-1][0]*a[i];
a33=dp[i-1][1]*a[i];
a4=dp[i-1][0]/a[i];
a44=dp[i-1][1]/a[i];
dp[i][0]=max({a1,a11,a2,a22,a3,a33,a4,a44});
dp[i][1]=min({a1,a11,a2,a22,a3,a33,a4,a44});
}else{
a1=dp[i-1][0]+a[i];
a11=dp[i-1][1]+a[i];
a2=dp[i-1][0]-a[i];
a22=dp[i-1][1]-a[i];
a3=dp[i-1][0]*a[i];
a33=dp[i-1][1]*a[i];
dp[i][0]=max({a1,a11,a2,a22,a3,a33});
dp[i][1]=min({a1,a11,a2,a22,a3,a33});
}
}
cout<<dp[n][0];
return 0;
}
用max和min的原因是可能有 负乘负 的可能