Cod sursă (job #796079)

Utilizator avatar avram.popa Avram-Popa avram.popa IP ascuns
Problemă Bizar (clasele 9-10) Compilator cpp-32 | 0,95 kb
Rundă Arhiva de probleme Status evaluat
Dată 19 nov. 2024 16:34:52 Scor 100
#include <fstream>
using namespace std;
#define MAXN (int)1e5
char v[MAXN+1];
int a[MAXN+1];
int n,pos,nra;

int solve() {
    int nr=0,nrac,nrt;
    nrac=nra;
    while(isdigit(v[pos])) {
        nr=nr*10+v[pos]-'0';
        pos++;
    }
    while(pos<n&&v[pos]=='(') {
        pos++;
        nrt=0;
        while(v[pos]!=')') {
            a[nra++]=solve();
            nrt++;
            if(v[pos]==',') {
                pos++;
            }
        }
        nra=nrac;
        nr=nr%nrt;
        if(nr==0) {
            nr=nrt;
        }
        nr=a[nra+nr-1];
        pos++;
    }
    return nr;
}
void delete_spaces() {
    int i;
    n=0;
    i=0;
    while(v[i]!=0) {
        if(!isspace(v[i])) {
            v[n++]=v[i];
        }
        i++;
    }
}
int main() {
    ifstream fin("bizar.in");
    ofstream fout("bizar.out");
    fin.getline(v,MAXN);
    delete_spaces();
    fout<<solve();
    return 0;
}