Cod sursa(job #1850019)

Utilizator DjokValeriu Motroi Djok Data 18 ianuarie 2017 07:56:17
Problema Perle Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <bits/stdc++.h>
using namespace std;

int i, t, n, c[10005];

int SolveC(int);
int SolveB(int);

int main()
{
  ifstream cin("perle.in");
  ofstream cout("perle.out");
  ios_base::sync_with_stdio(0);

  for(cin >> t; t; --t) {
    cin >> n;
    for(i = 1; i <= n; ++i) cin >> c[i];

    if(n == 1) cout << "1\n";
    else if(SolveB(1) == n || SolveC(1) == n) cout << "1\n";
         else cout << "0\n";
  }

  return 0;
}

int SolveC(int poz) {
  if(poz > n) return 0;

  if(c[poz] == 2) return poz;

  if(c[poz] == 1 && c[poz + 1] == 2) return poz + 2;

  if(c[poz] == 3) {
    int pz = SolveB(poz + 1);
    if(!pz) return 0;
    return SolveC(pz + 1);
  }

  return 0;
}

int SolveB(int poz) {
  if(poz > n) return 0;

  if(c[poz] == 2) return SolveB(poz + 1);

  if(c[poz] == 1 && c[poz + 2] == 3) return SolveC(poz + 4);

  return 0;
}