3
int calculate(string s) {4
stack<pair<int, int>> st; // pair(prev_calc_value , sign before next bracket () )9
for (int i = 0; i < s.size(); ++i) {13
long long int num = 0;14
while (i < s.size() and isdigit(s[i])) {15
num = (num * 10) + s[i] - '0';18
i--; // as for loop also increase i , so if we don't decrease i here a19
// sign will be skipped21
sign = +1; // reseting sign22
} else if (ch == '(') {23
// Saving current state of (sum , sign) in stack24
st.push(make_pair(sum, sign));26
// Reseting sum and sign for inner bracket calculation29
} else if (ch == ')') {30
sum = st.top().first + (st.top().second * sum);32
} else if (ch == '-') {