玄学RE...
#include<bits/stdc++.h>
using namespace std;
string s;
long long a[1000010];
long long cnt=0;
stack<char>b;
stack<long long>cao;
long long work(char x){
return (x=='('||x==')')?0:(x=='+'||x=='-')?1:(x=='*'||x=='/')?2:3;
}
void workk(){
char fake=b.top();
long long now=work(b.top());
b.pop();
while(!b.empty()&&(work(b.top())>=now&&now!=3)&&now!=0){
if(b.top()!='+'&&b.top()!='-'&&b.top()!='*'&&b.top()!='/'&&b.top()!='^')
a[++cnt]=b.top()-'0';
else
a[++cnt]=int(b.top());
b.pop();
}
b.push(fake);
}
signed main(){
cin>>s;
for(int i=0;i<s.size();i++){
if(s[i]>='0'&&s[i]<='9'){
if(s[i]!='+'&&s[i]!='-'&&s[i]!='*'&&s[i]!='/'&&s[i]!='^')
a[++cnt]=s[i]-'0';
else
a[++cnt]=int(s[i]);
}
else{
b.push(s[i]);
workk();
if(b.top()==')'){
b.pop();
workk();
while(!b.empty()&&b.top()!='('){
if(b.top()!='+'&&b.top()!='-'&&b.top()!='*'&&b.top()!='/'&&b.top()!='^')
a[++cnt]=b.top()-'0';
else
a[++cnt]=int(b.top());
b.pop();
}
b.pop();
}
}
}
while(!b.empty()){
if(b.top()!='+'&&b.top()!='-'&&b.top()!='*'&&b.top()!='/'&&b.top()!='^')
a[++cnt]=b.top()-'0';
else
a[++cnt]=int(b.top());
b.pop();
}
for(int i=1;i<=cnt;i++){
if((char)a[i]!='+'&&(char)a[i]!='-'&&(char)a[i]!='*'&&(char)a[i]!='/'&&(char)a[i]!='^')
cout<<a[i]<<' ';
else
cout<<(char)a[i]<<' ';
}
cout<<endl;
bool flag=0;
long long size=cnt;
while(size!=1){
flag=0;
for(int i=1;i<=size;i++){
if((char)a[i]!='+'&&(char)a[i]!='-'&&(char)a[i]!='*'&&(char)a[i]!='/'&&(char)a[i]!='^')
cao.push(a[i]);
else if(flag==0){
flag=1;
long long x=cao.top();
cao.pop();
long long y=cao.top();
cao.pop();
switch(a[i]){
case '+':{
cao.push(x+y);
break;
}
case '-':{
cao.push(y-x);
break;
}
case '*':{
cao.push(x*y);
break;
}
case '/':{
cao.push(y/x);
break;
}
case '^':{
cao.push(pow(y,x));
break;
}
}
}
else
cao.push(a[i]);
}
size-=2;
for(int i=size;i>=1;i--){
a[i]=cao.top();
cao.pop();
}
for(int i=1;i<=size;i++){
if((char)a[i]!='+'&&(char)a[i]!='-'&&(char)a[i]!='*'&&(char)a[i]!='/'&&(char)a[i]!='^')
cout<<a[i]<<' ';
else
cout<<(char)a[i]<<' ';
}
cout<<endl;
}
}