Cod sursa(job #2102797)

Utilizator DruffbaumPopescu Vlad Druffbaum Data 9 ianuarie 2018 15:03:42
Problema Perle Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <cstdio>

const int MAXN = 1e4;

int s[MAXN + 3];

int C(int cursor);

int B(int cursor) {
  if (s[cursor] == 2) {
    B(cursor + 1);
  } else if (s[cursor] == 1 && s[cursor + 2] == 3) {
    C(cursor + 4);
  } else {
    return -1;
  }
}

int C(int cursor) {
  if (s[cursor] == 2) {
    return cursor + 1;
  } else if (s[cursor] == 3) {
    C(B(cursor + 1));
  } else if (s[cursor] == 1 && s[cursor + 1] == 2) {
    return cursor + 3;
  } else {
    return -1;
  }
}

int main() {
  int t, n, cursor;
  FILE *fin = fopen("perle.in", "r");
  fscanf(fin, "%d", &t);
  FILE *fout = fopen("perle.out", "w");
  for (; t > 0; --t) {
    fscanf(fin, "%d", &n);
    for (int i = 0; i < n; ++i) {
      fscanf(fin, "%d", &s[i]);
    }
    fprintf(fout, "%d\n", (n == 1 || B(0) == n || C(0) == n) ? 1 : 0);
  }
  fclose(fin);
  fclose(fout);
  return 0;
}