Cod sursa(job #2566917)

Utilizator vlad082002Ciocoiu Vlad vlad082002 Data 3 martie 2020 13:52:38
Problema Perle Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <fstream>
#include <string>
#include <vector>
#include <iostream>
#include <set>
using namespace std;

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

const vector<string> transf[2] = {{"2B","1131C","1132C","1133C","1231C","1232C","1233C","1331C","1332C","1333C"},{"2","3BC","121","122","123"}};
int n, l;

bool posibil(string s, string cmp) {
    if(s.length() > cmp.length()) return false;
    if(s == cmp) return true;

    for(int i = 0; i < s.length(); i++)
        if(s[i] == 'B' || s[i] == 'C')
            for(auto x:transf[s[i]-'B']) {
                if(posibil(s.substr(0, i)+ x + s.substr(i+1, s.length()-i), cmp))
                    return true;
            }
    return false;
}

int main() {
    fin >> n;
    while(n--) {
        fin >> l;
        if(l == 1) {
            fout << true << '\n';
            continue;
        }
        string s;
        char q;
        while(l--) {
            fin >> q;
            s += q;
        }
        bool res = posibil("B", s) | posibil("C", s);
        fout << res << '\n';
    }
}