Cod sursa(job #3367478)

Utilizator stefan_ciureaStefan Ciurea stefan_ciurea Data 8 octombrie 2026 10:09:23
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.04 kb
// #pragma GCC optimize("O3,unroll-loops,fast-math")
// #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
#include <bits/stdc++.h>
#define ll long long
#define pii pair<int,int>
#define fi first
#define se second

using namespace std;

const int Nmax=2e5+5,inf=1e9,MOD=1e9+7;

string s;
int n,i;

int eval();

int factor() {
    if (s[i]=='(') {
        i++;
        int rez=eval();
        i++;
        return rez;
    }
    int rez=0;
    while (i<n && isdigit(s[i])) rez=rez*10+(s[i++]-'0');
    return rez;
}

int term() {
    int rez=factor();
    while (i<n && (s[i]=='*' || s[i]=='/')) {
        if (s[i++]=='*') rez*=factor();
        else rez/=factor();
    }
    return rez;
}

int eval() {
    int rez=term();
    while (i<n && (s[i]=='+' || s[i]=='-')) {
        if (s[i++]=='+') rez+=term();
        else rez-=term();
    }
    return rez;
}

int main() {
    ifstream cin("evaluare.in");
    ofstream cout("evaluare.out");

    cin>>s;
    n=s.size();
    i=0;
    cout<<eval();
    
    return 0;
}