Cod sursa(job #2555442)

Utilizator caineleturboSolnoc caineleturbo Data 24 februarie 2020 03:31:26
Problema Perle Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.86 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int n, x ,w;
int s[10001];
bool C();
bool A()
{
    if (x == w)
    {
        return false;
    }
    if (s[x] == 1 || s[x] == 2 || s[x] == 3)
    {
        x++;
        return true;
    }
    else
    {
        return false;
    }
}
bool B()
{
    if (x == w)
    {
        return false;
    }
    if (s[x] == 2)
    {
        x++;
        return B();
    }
    else if (s[x] == 1)
    {
        x++;
        bool k = false;
        k = A();
        if (!k)
            return false;
        if (s[x] != 3)
            return false;
        k = A();
        if (!k)
            return false;
        return C();
    }
    else
    {
        return false;
    }
}
bool C()
{
    if (x == w)
    {
        return false;
    }
    if (s[x] == 2)
    {
        x++;
        return true;
    }
    else if (s[x] == 3)
    {
        x++;
        bool k = false;
        k = B();
        if (!k)
            return false;
        return C();
    }
    else
    {
        x++;
        if (s[x] != 2)
        {
            return false;
        }
        x++;
        return A();
    }
}

int main()
{
    in >> n;
    for (int q = 0; q < n; q++)
    {
        in >> w;
        for (int i = 0; i < w; i++)
        {
            in >> s[i];
        }
        bool g = false;
        if (A() && x == w)
        {
            g = true;
        }
        else
        {
            x = 0;
        }
        if (B() && x == w && g == false)
        {
            g = true;
        }
        else
        {
            x = 0;
        }
        if (C() && x == w && g == false)
        {
            g = true;
        }
        else
        {
            x = 0;
        }
    }
}