Cod sursă (job #796409)

Utilizator avatar alecu Alecu Alex alecu IP ascuns
Problemă Bizar (clasele 9-10) Compilator cpp-32 | 1,01 kb
Rundă Arhiva de probleme Status evaluat
Dată 21 nov. 2024 14:02:50 Scor 50
#include <iostream>
#include <bits/stdc++.h>
using namespace std;

int n,m,x,y,p,t=1,fi;
char s[1000005];
vector<vector<int>>sol;

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



int recus(int k,int v){
    if(s[k]>='0'&&s[k]<='9'){
        x=x*10+s[k]-'0';
        y=x;
        return recus(k+1,v);
    }
    else if(s[k]==','){
        sol[t].push_back(x);
         x=0;
        return recus(k+1,v);
    }
    else if(s[k]==' '){
        return recus(k+1,v);
    }
    else if(s[k]=='('){
        x=0;
        t++;
        sol.push_back(vector<int>());
        x=(recus(k+1,y));
        y=x;
        sol.pop_back();
        t--;
        return recus(fi+1,v);
    }
    else if(s[k]==')'||s[k]=='\0'){
        if(x)
        sol[t].push_back(x);
        x=0;
        p=v%sol[t].size();
        fi=k;
        if(p==0)p+=sol[t].size();
        return sol[t][p-1];
    }
}


int main()
{

    sol.assign(2,vector<int>());
    fin.getline(s,1001);
    fout<<recus(0,1);
}