Pagini recente » Cod sursa (job #1201012) | Cod sursa (job #1955425) | Cod sursa (job #2447274) | Cod sursa (job #2305709) | Cod sursa (job #3241860)
#include <bits/stdc++.h>
using namespace std;
const int NMAX = 1e4+2;
int t,n,v[NMAX],pos;
bool valid;
ifstream fin("perle.in");
ofstream fout("perle.out");
void check(char ch){
if(ch == 'A'){
// A -> {1, 2, 3};
pos++;
}else if(ch == 'B'){
if(v[pos] == 2){
// B = 2B
pos++;
check('B');
}else if(v[pos] == 1 && v[pos+2] == 3){
// B = 1A3AC
pos++;
check('A');
pos++;
check('A');
check('C');
}else{
valid = false;
}
}else if(ch == 'C'){
// C -> {2; 3BC; 12A}
if(v[pos] == 2){
pos++;
}else if(v[pos] == 3){
pos++;
check('B');
check('C');
}else if(v[pos] == 1 && v[pos+1] == 2){
pos += 2;
check('A');
}else{
valid = false;
}
}
}
int main(){
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;
}