- #include<bits/stdc++.h>
- #define int long long
- using namespace std;
- int a[10];
- string s[5];
- bool vis[10];
- int ans=1e13;//0x3f=1e9,所有有点不够
- void dfs(int u)
- {
- // for(int i=0;i<4;i++)
- // {
- // printf("%d ",a[i]);
- // }
- // printf("\n");
- // for(int i=0;i<4;i++)
- // {
- // printf("%d ",vis[i]);
- // }
- // printf("\n");
- if(u==3)
- {
- for(int i=0;i<4;i++)
- {
- if(vis[i]==0)
- ans=min(ans,a[i]);//没有被记录的数就是最终结果,求最小
- }
- // printf("return\n");
- return;
- }
- for(int i=0;i<4;i++)
- {
- if(vis[i])continue;
- for(int j=0;j<4;j++)
- {
- if(j==i||vis[j])continue;//若为同一个数或已被选用,跳过
- int last=a[j];//last不能为全局变量
- if(s[u]=="+")
- {
- vis[i]=1;
- // last=a[j];
- a[j]+=a[i];
- dfs(u+1);
- vis[i]=0;
- a[j]=last;
- }
- else if(s[u]=="*")
- {
- vis[i]=1;
- // last=a[j];
- a[j]*=a[i];
- dfs(u+1);
- vis[i]=0;
- a[j]=last;
- }
- }
- }
- }
- signed main()
- {
- for(int i=0;i<4;i++)
- {
- scanf("%lld",&a[i]);
- }
- for(int i=0;i<3;i++)
- {
- cin>>s[i];
- }
- dfs(0);
- printf("%lld\n",ans);
- }