Pagini recente »
Istoria paginii runda/speshul/clasament
|
Istoria paginii runda/vaslui2022_cl_11_12
|
Cod sursă (job #295601)
|
Cod sursă (job #295607)
|
Cod sursă (job #310828)
Cod sursă (job
#310828)
#include <cstdio>
#include <cstring>
#define MAX_N 100000
#define MAX_NRS 50000
using namespace std;
FILE *f, *g;
char s[MAX_N + 2];
int v[MAX_N + 1];
int stk[MAX_N + 1];
bool isDigit[300];
int crChar;
int len;
int rez;
void getIsDigit()
{
int i;
for(i = '0'; i <= '9'; i ++)
isDigit[i] = 1;
}
void readFile()
{
f = fopen("bizar.in", "r");
fgets(s, MAX_N + 2, f);
len = strlen(s);
s[len - 1] = 0;///'\n'
len --;
fclose(f);
}
int exp()
{
int k = 0;
int stkLen = 0;
int i = 0;
while(i < len)
{
while(s[i] == ' ' || s[i] == ',')
i ++;
if(isDigit[s[i]])
{
int nr = 0;
while(isDigit[s[i]])
{
nr = nr * 10 + s[i] - '0';
i ++;
}
v[++ k] = nr;
}
else
if(s[i] == '(')
{
stk[++ stkLen] = k;
i ++;
}
else
if(s[i] == ')')
{
int nrs = k - stk[stkLen] ;
int first = v[stk[stkLen]];
first %= nrs;
if(first == 0)
first = nrs;
v[stk[stkLen]] = v[first + stk[stkLen]];
k = stk[stkLen --];
i ++;
}
}
return v[k];
}
void solve()
{
getIsDigit();
rez = exp();
}
void printFile()
{
g = fopen("bizar.out", "w");
fprintf(g, "%d\n", rez);
fclose(g);
}
int main()
{
readFile();
solve();
printFile();
return 0;
}