Cod sursa(job #2927666)

Utilizator divadddDavid Curca divaddd Data 21 octombrie 2022 00:21:40
Problema Perle Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <iostream>
#include <fstream>
#define MAX 10003
using namespace std;
int q,n,v[MAX];

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

bool good(string s){
    /**
    B -> 2B | 1A3AC
    C -> 2 | 3BC | 12A
    **/
    for(int i = 0; i < s.size(); i++){
        if(s[i] == 'A'){
            s[i] = (v[i]+'0');
        }else if(s[i] == 'B'){
            s.erase(i, 1);
            if(v[i] == 1){
                s.insert(i, "1A3AC");
            }else if(v[i] == 2){
                s.insert(i, "2B");
            }
        }else if(s[i] == 'C'){
            s.erase(i, 1);
            if(v[i] == 1){
                s.insert(i, "12A");
            }else if(v[i] == 2){
                s.insert(i, "2");
            }else if(v[i] == 3){
                s.insert(i, "3BC");
            }
        }
        if(s[i] != (v[i]+'0') || s.size() > n){
            return false;
        }
    }
    return (s.size() == n);
}

void solve(){
    fin >> n;
    for(int i = 0; i < n; i++){
        fin >> v[i];
    }
    if(n == 1){
        fout << "1\n";
        return;
    }
    fout << (good("B") || good("C")) << "\n";
}

int main()
{
    cin >> q;
    while(q--){
        solve();
    }
    return 0;
}