Cod sursă (job #757265)

Utilizator avatar B0gd4n_ Ciobanu Bogdan-Mihai B0gd4n_ IP ascuns
Problemă Bizar (clasele 9-10) Compilator cpp-32 | 1,12 kb
Rundă Arhiva de probleme Status evaluat
Dată 23 ian. 2024 15:48:10 Scor 100
#include <iostream>
#include <fstream>
#include <string>
#include <vector>

using namespace std;

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

string s;
size_t i;

int get_num(size_t& i) {
    string nr;
    while (isdigit(s[i])) {
        nr.push_back(s[i]);
        ++i;
    }
    return stoi(nr);
}

vector<int> f(size_t& i) {
    int c = 1;
    vector<int> vec;
    while (i < s.size()) {
        if (isdigit(s[i])) {
            c = get_num(i);
        }
        else if (s[i] == '(') {
            ++i;
            vector<int> aux = f(i);
            c %= aux.size();
            if (c)
                c = aux[c - 1];
            else c = aux[aux.size() - 1];
            ++i;
        }
        else if (s[i] == ',') {
            vec.push_back(c);
            ++i;
        }
        else if (s[i] == ')') {
            vec.push_back(c);
            return vec;
        }
        else { 
            ++i; 
        }
    }
    vec.push_back(c);
    return vec;
}

int main()
{
    getline(fin, s);
    
    vector<int> ans = f(i);
    fout << ans[0];

    return 0;
}