Cod sursa(job #3241863)

Utilizator divadddDavid Curca divaddd Data 5 septembrie 2024 12:40:27
Problema Perle Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <bits/stdc++.h>
using namespace std;
const int NMAX = 1e4+2;
int t,n,v[NMAX],pos;
bool valid;
vector<string> posib[3];

ifstream fin("perle.in");
ofstream fout("perle.out");

void check(char ch){
  bool found = false;
  for(string unfold: posib[ch-'A']){
    if(unfold[0]-'0' == v[pos]){
      found = true;
      for(char ch: unfold){
        if(isdigit(ch)){
          valid &= (ch-'0' == v[pos]);
          pos++;
        }else{
          check(ch);
        }
      }
      break;
    }
  }
  valid &= found;
}

int main(){
  posib[0] = {"1", "2", "3"};
  posib[1] = {"2B", "1A3AC"};
  posib[2] = {"2", "3BC", "12A"};

  fin >> t;
  while(t--){
    fin >> n;
    for(int i = 1; i <= n; i++){
      fin >> v[i];
    }
    bool ans = false;
    for(char ch: {'A', 'B', 'C'}){
      if(!ans){
        pos = 1;
        valid = true;
        check(ch);
        ans |= (valid && pos == n+1);
      }
    }
    fout << ans << "\n";
  }
  return 0;
}