Pagini recente »
Istoria paginii runda/lasm_22_02_2024_clasa12
|
Istoria paginii runda/9d_t/clasament
|
Cod sursă (job #97337)
|
vaslui_cls1112_07.03
|
Cod sursă (job #97325)
Cod sursă (job
#97325)
#include<cstdio>
#define MULT 100000
using namespace std;
int per[MULT+1];
int v[MULT+1];
int k;
char s[MULT+1];
int p;
void parc(int cat){
int i=1,niv=1;
while(i<cat){
while(s[p]==' ') p++;
if (s[p]=='('){
niv++;
k++;
}
else
if (s[p]==')') niv--;
else
if (s[p]==',' &&niv==1) i++;
p++;
}
}
void parc_par(){
int niv=1;
while(niv>0){
while(s[p]==' ') p++;
if (s[p]=='('){
niv++;
k++;
}
else
if (s[p]==')') niv--;
p++;
}
}
int numar(){
int val=0;
while(s[p]==' ') p++;
while(s[p]>='0' &&s[p]<='9'){
val=val*10+s[p]-'0';
p++;
while(s[p]==' ') p++;
}
return val;
}
int expresie(){
int val=numar();
while(s[p]==' ') p++;
while(s[p]=='('){
p++;
while(s[p]==' ') p++;
parc((val-1)%v[k]+1);
k++;
while(s[p]==' ') p++;
val=expresie();
while(s[p]==' ') p++;
parc_par();
}
return val;
}
int main(){
freopen ("bizar.in","r",stdin);
freopen ("bizar.out","w",stdout);
int i;
gets(s);
p=0;
k=0;
for(i=1;i<=MULT/3;i++) v[i]=0;
i=0;
while(s[p]!=NULL){
if ('('==s[p]){
i++;
while(v[i]!=0) i++;
k++;
v[i]=1;
per[k]=i;
}
else
if (s[p]==')'){
k--;
i=per[k];
}
else
if (s[p]==',') v[i]++;
p++;
}
p=0;
k=1;
printf ("%d",expresie());
return 0;
}