Cod sursa(job #2533349)

Utilizator ioi2020winnerAndrew ioi2020winner Data 28 ianuarie 2020 22:07:42
Problema Perle Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <fstream>
using namespace std;
ifstream cin("perle.in");
ofstream cout("perle.out");
/*A -> 1 | 2 | 3 (l=1)
B -> 2B | 1A3AC
C -> 2 | 3BC | 12A
*/
int l, v[10004], i;bool k;
void b();
void c();
void start();

int main()
{
  int n;
  cin >> n;
  while(n--)
  {
    cin >> l;
    k = 1;
    for(i = 1; i <= l; ++i)
      cin >> v[i];
    start();
    if(k)
      cout << 1 << '\n';
    else
      cout << 0 << '\n';
  //  cout << i << '\n';
  }
  return 0;
}
void b()
{
  if(i > l)
    return;
  if(v[i] == 2)
  {++i; b();}
  else if(v[i] == 1 && v[i + 2] == 3)
  {i += 4; c();}
  else k = 0;
}
void c()
{
  if(v[i] == 2)
    return;
  if(v[i] == 1 && v[i + 1] == 2)
    {i += 2; return;}
  if(v[i] == 3)
    {++i;b(); ++i;c();}
  else
    k = 0;
}
void start()
{
  if(l == 1)
    return;
  i = 1;
  if(v[i] == 1)
  {
    if(l == 3)
      c();
    else
      b();
  }
  else if(v[i] == 2)
    b();
  else
    c();
  if(i != l)
    k = 0;
}