Cod sursă (job #96854)

Utilizator avatar AlexPascadi Alex Pascadi AlexPascadi IP ascuns
Problemă Bizar (clasele 9-10) Compilator cpp | 0.95 kb
Rundă Tema 10 clasele 9-10 2014/15 Status evaluat
Dată 10 dec. 2014 23:01:26 Scor 100
#include <fstream>

using namespace std;

const int N=100001;
char v[N];
int nv;
int val[N];
int nval;
int p=0;

int Rezolva()
{
    int nr=0,aux=nval,ntermeni;
    //formeaza numar
    while(v[p]>='0' && v[p]<='9')
    {
        nr=nr*10+v[p]-'0';
        p++;
    }
    while(p<nv && v[p]=='(')
    {
        p++;
        ntermeni=0;
        while(v[p]!=')')
        {
            val[nval++]=Rezolva();
            ntermeni++;
            if(v[p]==',')
                p++;
        }
        nval=aux;
        nr%=ntermeni;
        if(nr==0)
            nr+=ntermeni;
        nr=val[aux+nr-1];
        //printf("nr=%d\n",nr);
        p++;
    }
    return nr;
}

int main()
{
    ifstream in("bizar.in");
    ofstream out("bizar.out");

    int i;
    in.getline(v,N);
    nv=0; i=0;
    while(v[i])
    {
        if(v[i]!=' ')
            v[nv++]=v[i];
        i++;
    }

    out<<Rezolva();
    return 0;
}