Cod sursă (job #339222)

Utilizator avatar PredaBoss Preda Andrei PredaBoss IP ascuns
Problemă Bizar (clasele 9-10) Compilator cpp | 0,99 kb
Rundă Arhiva de probleme Status evaluat
Dată 12 ian. 2018 20:33:17 Scor 0
#include <bits/stdc++.h>

using namespace std;
ifstream fin("bizar.in");
ofstream fout("bizar.out");
int i,k[10000],j=0,v[10000][50000],p[10000];
char a[100000];
int termen()
{
    int n=0;
    while(a[i]-'0'>=0 && a[i]-'0'<=9){
        n=n*10+a[i]-'0';
        i++;
    }
    return n;
}
int calcul()
{
    while(a[i]!='\0' && a[i]!=')'){
        if(a[i]-'0'>=0 && a[i]-'0'<=9){
            p[j]++;
            v[j][p[j]]=termen();
        }
        else{
            if(a[i]=='('){
                j++;
                k[j]=v[j-1][p[j-1]];
                v[j-1][p[j-1]]=calcul();
                j--;
                }
                else{
                    i++;
                }
        }
    }
    if(a[++i]=='('){
        k[j]=v[j][k[j]%p[j]];
        p[j]=0;
        return calcul();
       }
       else{
    v[j][0]=v[j][p[j]];
    return v[j][k[j]%p[j]];}
}
int main()
{fin.get(a,100000);
k[0]=a[0]-'0';
i=2;
fout<<calcul();


    return 0;
}