Cod sursă (job #120183)

Utilizator avatar Epictet Stamatin Cristian Epictet IP ascuns
Problemă Bizar (clasele 9-10) Compilator cpp | 0,98 kb
Rundă Arhiva de probleme Status evaluat
Dată 19 feb. 2015 11:48:43 Scor 100
#include <fstream>
#include <vector>
using namespace std;
ifstream fin ("bizar.in");
ofstream fout ("bizar.out");
char C[100010], *now;

int Get_Num()
{
    int number = 0;
    while (*now >= '0' && *now <= '9')
    {
        number = number * 10 + *now - '0';
        now++;
    }
    return number;
}

int Verif(int nr)
{
    vector < int > A;
    while (*now != '\n' && *now != '\0')
    {
        while (*now == ' ' || *now == ',') now++;
        if (*now == '(')
        {
            now++;
            A.back() = Verif(A.back());
        }
        else if (*now == ')')
        {
            now++;
            if (nr % A.size() == 0) nr = A.size() - 1;
            else nr = nr % A.size() - 1;
            return A[nr];
        }
        else
        {
            A.push_back(Get_Num());
        }
    }
    return A.back();
}

int main()
{
    fin.getline(C, 100000);
    now = C;
    fout << Verif(0) << '\n';
    fout.close();
    return 0;
}