Cod sursă (job #107814)

Utilizator avatar hrazvan Harsan Ovidiu Razvan hrazvan IP ascuns
Problemă Bizar (clasele 9-10) Compilator c | 0.69 kb
Rundă Tema 15 clasa 8 Status evaluat
Dată 19 ian. 2015 19:16:10 Scor 100
#include <stdio.h>
#define MAXL 100000
FILE *in;
char p;
int v[MAXL];

inline void nextch(){
  p = fgetc(in);
  while(p == ' ')
    p = fgetc(in);
}

inline int getnum(){
  int x = 0;
  while(p >= '0' && p <= '9'){
    x *= 10;
    x += p - '0';
    nextch();
  }
  return x;
}

int eval(int st){
  int x = getnum(), nr = 0;
  while(p == '('){
    while(p != ')'){
      nextch();
      v[st + nr] = eval(st + nr);
      nr++;
    }
    x = v[st + (x - 1) % nr];
    nr = 0;
    nextch();
  }
  return x;
}

int main(){
  in = fopen("bizar.in", "r");
  FILE *out = fopen("bizar.out", "w");
  nextch();
  fprintf(out, "%d", eval(0));
  fclose(in);
  return 0;
}