#include<bits/stdc++.h>
using namespace std;
char s[110];
char pp[110];
int ans[110];
int tot;
stack<char>q;
stack<char>p;
stack<char>mid;
bool pd(char a,char b){
if(a=='^'&&b!='^') return true;
else if((a=='*'||a=='/'||a=='^')&&(b!='*'&&b!='/'&&b!='^')) return true;
else return false;
}
int main(){
cin>>s;
for(int i=0;i<strlen(s);i++){
if(s[i]=='('){
q.push(s[i]);
continue;
}
if(s[i]>='0'&&s[i]<='9'){
p.push(s[i]);
continue;
}
if(q.empty()){
q.push(s[i]);
continue;
}
if(s[i]=='+'||s[i]=='^'||s[i]=='/'||s[i]=='*'||s[i]=='-'){
if(pd(s[i],q.top())){
q.push(s[i]);
continue;
}
else{
char a=q.top();
while(a!='('&&!pd(s[i],a)){
p.push(a);
q.pop();
if(q.empty()){
break;
}
a=q.top();
}
q.push(s[i]);
continue;
}
}
if(s[i]==')'){
char a=q.top();
while(a!='('){
p.push(a);
q.pop();
a=q.top();
}
q.pop();
continue;
}
}
while(!q.empty()){
p.push(q.top());
q.pop();
}
while(!p.empty()){
mid.push(p.top());
p.pop();
}
while(!mid.empty()){
pp[++tot]=mid.top();
mid.pop();
}
for(int i=1;i<=tot;i++){//更换数据结构
cout<<pp[i]<<" ";
}
cout<<endl;
int cnt=0;
for(int i=1;i<=tot;i++){
if(pp[i]>='0'&&pp[i]<='9'){
ans[++cnt]=pp[i]-'0';
}else{
if(pp[i]=='+'){
int aa=ans[cnt];
cnt--;
int bb=ans[cnt];
cnt--;
int cc=aa+bb;
ans[++cnt]=cc;
for(int j=1;j<=cnt;j++){
cout<<ans[j]<<" ";
}
for(int j=i+1;j<=tot;j++){
cout<<pp[j]<<" ";
}
cout<<endl;
}
if(pp[i]=='-'){
int aa=ans[cnt];
cnt--;
int bb=ans[cnt];
cnt--;
int cc=bb-aa;
ans[++cnt]=cc;
for(int j=1;j<=cnt;j++){
cout<<ans[j]<<" ";
}
for(int j=i+1;j<=tot;j++){
cout<<pp[j]<<" ";
}
cout<<endl;
}
if(pp[i]=='/'){
int aa=ans[cnt];
cnt--;
int bb=ans[cnt];
cnt--;
int cc=bb/aa;
ans[++cnt]=cc;
for(int j=1;j<=cnt;j++){
cout<<ans[j]<<" ";
}
for(int j=i+1;j<=tot;j++){
cout<<pp[j]<<" ";
}
cout<<endl;
}
if(pp[i]=='*'){
int aa=ans[cnt];
cnt--;
int bb=ans[cnt];
cnt--;
int cc=aa*bb;
ans[++cnt]=cc;
for(int j=1;j<=cnt;j++){
cout<<ans[j]<<" ";
}
for(int j=i+1;j<=tot;j++){
cout<<pp[j]<<" ";
}
cout<<endl;
}
if(pp[i]=='^'){
int aa=ans[cnt];
cnt--;
int bb=ans[cnt];
cnt--;
int cc=pow(bb,aa);
ans[++cnt]=cc;
for(int j=1;j<=cnt;j++){
cout<<ans[j]<<" ";
}
for(int j=i+1;j<=tot;j++){
cout<<pp[j]<<" ";
}
cout<<endl;
}
}
}
return 0;
}
Subtask #1WA了