Cod sursă (job #434687)

Utilizator avatar AndreiJJ Andrei Iordan AndreiJJ IP ascuns
Problemă Bizar (clasele 9-10) Compilator cpp | 1,23 kb
Rundă Arhiva de probleme Status evaluat
Dată 13 feb. 2019 13:43:28 Scor 100
#include <iostream>
#include <vector>
#include <algorithm>
#include <fstream>
using namespace std;
int st[100005], top;
char s[100005];
ifstream fin ("bizar.in");
ofstream fout ("bizar.out");
const int bracket = 2E9;
int main()
{
    int x, val, dr;
    fin.getline(s, 100005);
    for (int i = 0; s[i];)
    {
        if ('0' <= s[i] && s[i] <= '9')
        {
            x = 0;
            while ('0' <= s[i] && s[i] <= '9')
            {
                x = x * 10 + s[i] - '0';
                i++;
            }
            st[++top] = x;
        }
        else if (s[i] == ' ' || s[i] == ',')
            i++;
        else if (s[i] == '(')
        {
            st[++top] = bracket;
            i++;
        }
        else /// s[i] = ')'
        {
            dr = top;
            while (st[dr] != bracket)
                dr--;
            x = st[dr - 1];
            val = top - dr;
            x %= val;
            if (x == 0) x = val;
            st[dr - 1] = st[dr + x];
            top = dr - 1;
            i++;
        }
        /**for (int j = 1; j <= top; j++)
        fout << st[j] << " ";
        fout << "\n\n";*/
    }
    fout << st[1] << "\n";
    fout.close();
    return 0;
}