#include using namespace std; void calc(string S){ int N=S.size(); vector nearest(N); int temp=N; for(int i=N-1;i>=0;i--){ if(S[i]=='*'){ temp=i; } nearest[i]=temp; } vector nearest2(N); int temp2=N; temp=N; for(int i=N-1;i>=0;i--){ if(S[i]=='^'){ temp2=temp; temp=i; } nearest2[i]=temp2; } vector nearest_merge(N); for(int i=0;i end(N); temp=0; for(int i=N-1;i>=0;i--){ if(S[i]==')'){ ++temp; } end[i]=temp; } int ret=0; for(int i=0;i>S; T=""; for(int i=S.size()-1;i>=0;i--){ T+=S[i]; } calc(T); cout<<" "; calc(S); }