Cod sursă (job #750527)

Utilizator avatar AncaVianista21 Anca Constantin AncaVianista21 IP ascuns
Problemă Bizar (clasele 9-10) Compilator cpp-32 | 1,00 kb
Rundă Arhiva de probleme Status evaluat
Dată 12 dec. 2023 08:53:29 Scor 100
#include <bits/stdc++.h>

using namespace std;

ifstream fin("bizar.in");
ofstream fout("bizar.out");

int main()
{
    stack <int> v;
    int n;
    string s;
    vector<int> tmp;
    getline(fin, s);
    n=s.size();
    s="t"+s;
    for(int i=1;i<=n;++i)
    {
        if(s[i]=='(')
        {
            v.push(-1);
        }
        else if(s[i]==')')
        {
            while(v.top() != -1)
            {
                tmp.push_back(v.top());
                v.pop();
            }
            v.pop();
            reverse(tmp.begin(), tmp.end());
            int k = tmp[(v.top() - 1) % tmp.size()];
            tmp.clear();
            v.pop();
            v.push(k);
        }
        else if(s[i] != ',' && s[i]!=' ') {
            int nr = 0;
            while(i <= n && s[i] <= '9' && s[i] >= '0') {
                nr = nr * 10 + (s[i++] - '0');
            }
            v.push(nr);
            --i;
        }
    }

    fout << v.top();
    return 0;
}