Cod sursa(job #2850594)

Utilizator grigorut_octavianGrigorut Dominic Octavian grigorut_octavian Data 17 februarie 2022 08:23:35
Problema Perle Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.89 kb
#include <iostream>
#include <fstream>
using namespace std;

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

int n,l;
int poz;
int v[10002];
bool ok;

void executaLitera(char c)
{
    if(poz>l)
    {
        ok=false;
        return;
    }
    if(c=='c')
    {
        if(v[poz]==1)
        {
            poz++;
            if(v[poz]==2) poz++;
            else
            {
                ok=false;
                return;
            }
            executaLitera('a');
        }
        else if(v[poz]==3)
        {
            poz++;
            executaLitera('b');
            executaLitera('c');
        }
        else if(v[poz]==2)
            poz++;
    }
    else if(c=='a')
    {
        poz++;
    }
    else if(c=='b')
    {
        if(v[poz]==3)
        {
            ok=false;
            return;
        }
        else if(v[poz]==2)
        {
            poz++;
            executaLitera('b');

        }
        else if(v[poz]==1)
        {
            poz++;
            executaLitera('a');
            if(v[poz]==3) poz++;
            else
            {
                ok=false;
                return;
            }
            executaLitera('a');
            executaLitera('c');
        }
    }
}

int main()
{
    int c;
    fin>>n;
    for(int i=1; i<=n; i++)
    {
        fin>>l;
        ok=true;
        if(l==1) fin>>c, fout<<1<<'\n';
        else
        {
            poz=1;
            for(int i=1; i<=l; i++)
                fin>>v[i];
            if(v[1]==1)
            {
                if(l==3) executaLitera('c');
                else executaLitera('b');
            }
            else if(v[1]==2)
                executaLitera('b');
            else if(v[1]==3)
                executaLitera('c');
            if(poz<l) ok=false;
            fout<<ok<<'\n';
        }
    }
    return 0;
}