Cod sursa(job #3210520)

Utilizator Ionut2212Nedelcu Alexandru Ionut Ionut2212 Data 6 martie 2024 14:52:09
Problema Perle Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.81 kb
#include <iostream>
#include <fstream>

using namespace std;
ifstream fin ("perle.in");
ofstream fout ("perle.out");
int A(), B(), C(), n, m, i;
int v[10001];
int A()
{
    if(i == m+1) return 0;
    //cout << v[i];
    if(v[i] == 1 || v[i] == 2 || v[i] == 3)
    {
        i++;
        return 1;
    }
    else
    return 0;
}
int B()
{
    if(i == m+1) return 0;
    if(v[i] == 2)
    {
        i++;
        return B();
    }
    else
    {
        if(v[i] == 1)
        {
            i++;
            int x = A();
            if(x == 0) return 0;
            if(v[i] != 3) return 0;
            i++;
            x = A();
            if(x == 0) return 0;
            return C();
        }
        else return 0;
    }
}
int C()
{
    if(i == m+1) return 0;
    if(v[i] == 2)
    {
        i++;
        return 1;
    }
    else
    if(v[i] == 1)
    {
        i++;
        if(v[i]!=2)
        {
        i++;
        return 0;
        }
        else
        {
            i++;return A();
        }
    }
    else
    {
        if(v[i]!=3) return 0;
        i++;
        int x = B();
        if(x == 0) return 0;
        return C();
    }
}

int main()
{
    fin >> n;
    for(int k = 1; k<=n; k++)
    {
        i = 1; int z = 0;
        fin >> m;

        for(int j = 1; j<=m; j++)fin >> v[j];

        int val = A();
        if(val == 1 && i == m+1)
        {
            fout << "1\n";
            z = 1;
        }
        i = 1;
         val = B();
        if(val == 1 && i == m+1)
        {
            fout << "1\n";
            z = 1;
        }
        i = 1;
        val = C();
        if(val == 1 && i == m+1)
        {
            fout << "1\n";
            z = 1;
        }
        if(z == 0) fout << "0\n";

    }
    return 0;
}