Cod sursa(job #1505589)

Utilizator DobosDobos Paul Dobos Data 19 octombrie 2015 14:45:35
Problema A+B Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin ("emm.in");
ofstream fout ("emm.out");
typedef  long long int var;
stack < var > val;
stack < char > semn;
string s;
inline void calcul()
{
    char x = semn.top(); semn.pop();
    var a = val.top(); val.pop();
    var b = val.top(); val.pop();
    if(x == 'm')
        val.push(min(a,b));
    else
        val.push(max(a,b));
}
inline var eval()
{
    var x;
    for(int i = 0; i < s.size(); i++){
        if(s[i] == '('){
            semn.push(s[i]);
           } else {
                if(s[i] == ')'){
                    while(semn.top() != '(')
                            calcul();
                    semn.pop();
                }
                if(!isdigit(s[i]))
                    semn.push(s[i]);
                    else{
                         x = 0;
                        for(; isdigit(s[i]) ; i++)
                            x = x * 10 + (s[i] - '0');
                        val.push(x);
                        i--;
                    }
           }
    }
    while(semn.size() > 1)
        calcul();
        return val.top();
}
int main()
{
    fin >> s;
    semn.push('$');
    fout << eval();
    return 0;
}