#include <iostream>
#include <list>

using namespace std;

int pobierzPriorytet(char op){
    switch(op){
        case '+':
        case '-':
            return 1;
        case '*':
        case '/':
            return 2;
        case '^':
            return 3;
    }
    return 0;
}

int main()
{
    list<char> stos;

    string wyrazenie = "(a+b*c)/d=";

    for(int i = 0; i < wyrazenie.length(); i++){
        char znak = wyrazenie[i];

        if(znak == '='){
            while(!stos.empty()){
                char op = stos.back();
                cout << op;
                stos.pop_back();
            }
        }
        else if(znak == '+' || znak == '-' || znak == '*' || znak == '/' || znak == '^'){
            while(!stos.empty()){
                if(znak == '^' || pobierzPriorytet(znak) > pobierzPriorytet(stos.back())){
                    break;
                }
                cout << stos.back();
                stos.pop_back();
            }
            stos.push_back(znak);
        }
        else if(znak == '('){
            stos.push_back('(');
        }
        else if(znak == ')'){
            while(stos.back() != '('){
                cout << stos.back();
                stos.pop_back();
            }
            stos.pop_back();
        }
        else{
            cout << znak;
        }
    }
}
