1 #define bug(x) cout<<#x<<" is "<<x<<endl 2 #include<bits/stdc++.h> 3 using namespace std; 4 const int N=2e6+10; 5 6 stack<char>s; 7 queue<char>q; 8 9 int n; 10 char t[N]; 11 12 void solve(){ 13 for(int i=1;i<=n;i++){ 14 if(t[i]>='a'&&t[i]<='z')q.push(t[i]); 15 else if(t[i]=='('){ 16 s.push(t[i]); 17 } 18 else if(t[i]=='^'){ 19 while(!s.empty()&&s.top()=='^'){ 20 q.push(s.top()); 21 s.pop(); 22 } 23 s.push(t[i]); 24 } 25 else if(t[i]=='*'||t[i]=='/'){ 26 while(!s.empty()&&(s.top()=='^'||s.top()=='*'||s.top()=='/')){ 27 q.push(s.top()); 28 s.pop(); 29 } 30 s.push(t[i]); 31 } 32 else if(t[i]=='+'||t[i]=='-'){ 33 while(!s.empty()&&s.top()!='('){ 34 q.push(s.top()); 35 s.pop(); 36 } 37 s.push(t[i]); 38 } 39 else{ 40 while(!s.empty()&&s.top()!='('){ 41 q.push(s.top()); 42 s.pop(); 43 } 44 s.pop(); 45 } 46 } 47 while(!s.empty()){ 48 q.push(s.top()); 49 s.pop(); 50 } 51 while(!q.empty()){ 52 printf("%c",q.front()); 53 q.pop(); 54 } 55 } 56 int main(){ 57 scanf("%s",t+1); 58 n=strlen(t+1); 59 solve(); 60 }