Cod sursa(job #2205289)

Utilizator vladisimovlad coneschi vladisimo Data 18 mai 2018 18:22:34
Problema Perle Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <cstdio>

int solveB(int pos, int x[]);
int solveC(int pos, int x[]);

int solveB(int pos, int x[]) {
  if (x[pos] == 1 && x[pos + 2] == 3)
    return solveC(pos + 4, x);
  if (x[pos] == 2)
    return solveB(pos + 1, x);
  return 0;
}

int solveC(int pos, int x[]) {
  if (x[pos] == 2)
    return pos + 1;
  if (x[pos] == 3)
    return solveC(solveB(pos + 1, x), x);
  if (x[pos] == 1 && x[pos + 1] == 2)
    return pos + 3;
  return 0;
}

int main() {
  freopen("perle.in", "r", stdin);
  freopen("perle.out", "w", stdout);
  int n;
  scanf("%d", &n);
  while (n--) {
    int k, x[2 + 10000];
    scanf("%d", &k);
    for (int i = 1; i <= k; i++)
      scanf("%d", &x[i]);
    if (k == 1 || solveB(1, x) == k + 1 || solveC(1, x) == k + 1)
      printf("1\n");
    else
      printf("0\n");
  }
  return 0;
}