Cod sursa(job #3134832)

Utilizator Mihai_OctMihai Octavian Mihai_Oct Data 31 mai 2023 14:14:25
Problema Perle Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("perle.in");
ofstream fout("perle.out");
int q, n, i, v[10002];

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

int main() {
    fin >> q;
    while(q--) {
        fin >> n;
        for(i = 0; i < n; i++) fin >> v[i];

        if(n == 1) fout << "1\n";
        else fout << (eval("B") || eval("C")) << "\n";
    }

    return 0;
}