#include #include #include using namespace std; enum types {lPar, pl, mul, num}; struct Type{ Type(int i){ t = num; number = i; } Type(types type){ t = type; if(t == num){ number = 1; } } types t; int number = 0; }; void eval(vector& v){ int res = 0; types prev = pl; Type curr = v.back(); while(curr.t != lPar){ if(curr.t == num){ if(prev == pl){ res += curr.number; } if(prev == mul){ res *= curr.number; } } prev = curr.t; v.pop_back(); curr = v.back(); } v.pop_back(); if(v.empty()){ v.push_back(Type(lPar)); } if(!v.empty() && v.back().t == mul){ v.push_back(Type(res)); eval(v); } else v.push_back(Type(res)); } int main(){ int len,res=0; string s; cin >> len; cin >> s; vector v; char prev = '1'; for(int i = 0; i < len; i++){ if(prev == ')' && s[i] == '('){ v.push_back(Type(mul)); } else if(prev == '(' && s[i] == ')'){ v.push_back(Type(1)); } else if(s[i] == ')' && prev == ')'){ v.push_back(Type(pl)); v.push_back(Type(1)); } if(s[i] == ')'){ eval(v); } if(s[i] == '('){ v.push_back(Type(lPar)); } prev = s[i]; } // char x1,x2; // cin>>len>>x2; // for(int i=0;i<(len-1);i++){ // x1=x2; // cin>>x2; // if((x1=='(' && x2==')') || (x1==')' && x2==')')){ // res++; // } else if(x1==')' && x2=='('){ // res--; // } // } cout<