Untitled

 avatar
unknown
plain_text
2 years ago
1.1 kB
9
Indexable
#include <bits/stdc++.h>
#define int long long
using namespace std;

int32_t main()
{
  string s;
  stack<string> st1;
  stack<char> st2;
  getline(cin, s);
  int n = s.length();
  for (int i = 0; i < n; i++)
  {
    if (s[i] == '(')
    {

      string ss = "(";
      st1.push(ss);
      i++;
    }
    else if (s[i] == ')')
    {

      char op = st2.top();
      st2.pop();
      if (op == '+')
      {
        int res = 0;
        while (st1.top() != "(")
        {
          res += stoi(st1.top());
          st1.pop();
        }
        st1.pop();
        st1.push(to_string(res));
      }
      else
      {
        int res = 1;
        while (st1.top() != "(")
        {
          res *= stoi(st1.top());
          st1.pop();
        }
        st1.pop();
        st1.push(to_string(res));
      }
      i++;
    }
    else if (isdigit(s[i]))
    {

      int j = i + 1;
      while (isdigit(s[j]))
        j++;
      st1.push(s.substr(i, j - 1));
      i = j;
    }
    else
    {

      st2.push(s[i]);
      i++;
    }
  }
  cout << st1.top() << endl;
}
Editor is loading...