Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <stack>
- using namespace std;
- int main()
- {
- char s[256];
- int cif,sum,i;
- stack <int> A,B;
- cin>>s;
- for (i=0; s[i]!=0; i++)
- {
- if (s[i]=='(')
- {
- A.push(-1);
- B.push(-1);
- }
- else
- if (s[i]=='A')
- {
- if (s[i+1]>='0' && s[i+1]<='9')
- {
- cif=0;
- while (s[i+1]!=0 && s[i+1]>='0' && s[i+1]<='9')
- {
- cif=cif*10+(s[i+1]-'0');
- i++;
- }
- A.push(cif);
- }
- else A.push(1);
- }
- else
- if (s[i]=='B')
- {
- if (s[i+1]>='0' && s[i+1]<='9')
- {
- cif=0;
- while (s[i+1]!=0 && s[i+1]>='0' && s[i+1]<='9')
- {
- cif=cif*10+(s[i+1]-'0');
- i++;
- }
- B.push(cif);
- }
- else B.push(1);
- }
- else
- {
- if (s[i+1]>='0' && s[i+1]<='9')
- {
- cif=0;
- while (s[i+1]!=0 && s[i+1]>='0' && s[i+1]<='9')
- {
- cif=cif*10+(s[i+1]-'0');
- i++;
- }
- }
- else cif=1;
- sum=0;
- while (A.top()!=-1)
- {
- A.top()=cif*A.top();
- sum=sum+A.top();
- A.pop();
- }
- A.pop();
- A.push(sum);
- sum=0;
- while (B.top()!=-1)
- {
- B.top()=cif*B.top();
- sum=sum+B.top();
- B.pop();
- }
- B.pop();
- B.push(sum);
- }
- }
- sum=0;
- while (!A.empty())
- {
- if (A.top()>=0) sum=sum+A.top();
- A.pop();
- }
- cout<<sum<<" ";
- sum=0;
- while (!B.empty())
- {
- if (B.top()>=0) sum=sum+B.top();
- B.pop();
- }
- cout<<sum;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement