#include<bits/stdc++.h>
using namespace std;
const int N=110;
int fmx[N][N],fmn[N][N],si[N],num[N];
int cm(int l,int r,int k,int f[N][N]){
//cout<<l<<" "<<k<<" "<<k+1<<" "<<r<<" "<<f[l][k]<<((si[k+1]==1)?"+":"*" )<<f[k+1][r]<<endl;
/* + */if(si[k+1]==1)return f[l][k]+f[k+1][r];
/* * */if(si[k+1]==2)return f[l][k]*f[k+1][r];
}
void dpmx(int l,int r){
for(int k=l;k<=r;k++){
fmx[l][r]=max(max(cm(l,r,k,fmx),cm(l,r,k,fmn)),fmx[l][r]);
}
}
void dpmn(int l,int r){
for(int k=l;k<=r;k++){
fmn[l][r]=min(cm(l,r,k,fmn),fmn[l][r]);
}
}
void dp(int l,int r){
for(int i=l;i<=r;i++){
for(int j=i;j<=r;j++){
if(i==j){
////fmx[i][j]=fmn[i][j]=num[i];
continue;
}
////if(i+1==j){
////fmx[l][r]=max(max(cm(l,r,k,fmx),cm(l,r,k,fmn)),fmx[i][j]);
////}
//else{
dpmx(i,j);
dpmn(i,j);
//}
}
}
}
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
char s;
cin>>s;
cin>>num[i];
fmx[i+n][i+n]=fmn[i+n][i+n]=fmn[i][i]=fmx[i][i]=num[i];
if(s=='t')si[i]=si[i+n]=1;
if(s=='x')si[i]=si[i+n]=2;
}
dp(1,n*2);
int maxn=0;
for(int i=1;i<=n;i++){
maxn=max(fmx[i][i+n-1],maxn);
//cout<<fmx[i][i+n-1]<<endl;
}
cout<<maxn<<endl;
for(int i=1;i<=n;i++){
if(fmx[i][i+n-1]==maxn){
cout<<i<<" ";
}
}
return 0;
}
注释里有输出的是测试哦
输入
4
t -7 t 4 x 2 x 5
输出
33
2