Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- const int N = 1e5+10;
- int arr[4];
- char op[3];
- long long solve(int sym[3],vector<int> v,int num)
- {
- vector<long long> vec;
- vec.push_back(arr[num-1]);
- for(int i = 0; i < v.size();i++)
- {
- vec.push_back(arr[v[i]-1]);
- //cout << vec[i+1] << endl;
- }
- vector<char> symbols;
- for(int i = 0; i < 3; i++)
- symbols.push_back(op[sym[i]-1]);
- for(int i = 0; i < symbols.size(); i++)
- {
- if(symbols[i]=='*')
- {
- vec[i]*=vec[i+1];
- vec.erase(vec.begin()+(i+1));
- symbols.erase(symbols.begin()+i);
- i--;
- }
- }
- /*for(int i = 0; i < vec.size();i++)
- cout << vec[i] << " ";
- cout << endl;*/
- for(int i = 0; i < symbols.size(); i++)
- {
- if(symbols[i]=='+')
- {
- vec[i]+=vec[i+1];
- vec.erase(vec.begin()+(i+1));
- symbols.erase(symbols.begin()+i);
- i--;
- }
- }
- /*for(int i = 0; i < vec.size();i++)
- cout << vec[i] << " ";
- cout << endl;*/
- long long mx = -1e9;
- for(int i = 0; i < vec.size();i++)
- mx = max(mx,vec[i]);
- //cout << endl;
- //cout << mx << endl;
- return mx;
- }
- int main()
- {
- ios::sync_with_stdio(0);
- cin.tie(NULL);
- cout.tie(NULL);
- #ifndef ONLINE_JUDGE
- //freopen("input.txt", "r", stdin);
- //freopen("out.txt", "w", stdout);
- #endif // ONLINE_JUDGE
- long long ans = 1e18;
- bool zero = false;
- bool mult = false;
- for(int i = 0; i < 4;i++)
- {
- cin >> arr[i];
- if(!arr[i])
- zero = true;
- }
- for(int i = 0; i < 3; i++)
- {
- cin >> op[i];
- if(op[i]=='*')
- mult = true;
- }
- if(mult && zero)
- {
- cout << 0;
- return 0;
- }
- for(int i = 1;i<=4;i++)
- {
- vector<int> numseq;
- for(int j = 1;j<=4;j++)
- {
- if(j!=i)
- numseq.push_back(j);
- }
- bool numSwipeRight = true;
- for(int j = 0; j < 6;j++)
- {
- int symseq[] = {1,2,3};
- bool symSwipeRight = true;
- for(int k = 0; k<6;k++)
- {
- ans = min(ans,solve(symseq,numseq,i));
- //cout << ans << endl;
- if(symSwipeRight)
- {
- swap(symseq[1],symseq[2]);
- symSwipeRight = false;
- }
- else
- {
- swap(symseq[1],symseq[0]);
- symSwipeRight=true;
- }
- }
- if(numSwipeRight)
- {
- swap(numseq[1],numseq[2]);
- numSwipeRight=false;
- }
- else
- {
- swap(numseq[1],numseq[0]);
- numSwipeRight=true;
- }
- }
- }
- /*int symtest[] = {1,2,3};
- vector<int> numtest;
- numtest.push_back(2);
- numtest.push_back(3);
- numtest.push_back(4);
- ans = min(ans,solve(symtest,numtest,1));*/
- cout << ans << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement