#include<iostream>
#include<stdlib.h>
#include<string>
#include<string.h>
#include<sstream>
#include<algorithm>
using namespace std;
string s;
int len;
int max1[1000][1000];
int min1[1000][1000];
int oper(char a, char b,char c)
{
int a1,c1;
stringstream ss;
ss<<a;
ss>>a1;
stringstream ss2;
ss2<<c;
ss2>>c1;
if (b=='*') return a1*c1;
if (b=='/') return a1/c1;
if (b=='+') return a1+c1;
if (b=='-') return a1-c1;
}
int oper2(int a, char b,int c)
{
if (b=='*') return a*c;
if (b=='/') return a/c;
if (b=='+') return a+c;
if (b=='-') return a-c;
}
void dp(int st,int en)
{
if (en-st<=2)
{
if (en-st==2)
{
max1[st][en]=oper(s[st],s[st+1],s[en]);
min1[st][en]=oper(s[st],s[st+1],s[en]);
}
else
{
max1[st][en]=s[st]-'0';
min1[st][en]=s[st]-'0';
}
}
else
{
int i,k,c=0;
int cmax,cmin;
int t[4];
cmax=-2147483647; cmin=2147483647;
for (i=st+1;i<=en-1;i++)
{
if (not isdigit(s[i]))
{
if (max1[st][i-1]==0)
{dp(st,i-1);}
if (max1[i+1][en]==0)
{dp(i+1,en);}
t[0]=oper2(max1[st][i-1],s[i],max1[i+1][en]);
t[1]=oper2(max1[st][i-1],s[i],min1[i+1][en]);
t[2]=oper2(min1[st][i-1],s[i],max1[i+1][en]);
t[3]=oper2(min1[st][i-1],s[i],min1[i+1][en]);
int j;
for (j=0;j<=3;j++)
{if (t[j]>cmax){cmax=t[j];}
if (t[j]<cmin) {cmin=t[j];}
}
}
max1[st][en]=cmax;
min1[st][en]=cmin;
}
}
}
int main()
{
while (cin>>s)
{
memeset(max1,0,sizeof(max1));
memeset(max2,0,sizeof(max2));
s=' '+s;
len=s.length();
dp(1,len-1);
cout<<max1[1][len-1]<<endl;
}
return 0;
}
為甚麼會WA....59