Cod sursa(job #2533326)

Utilizator mihnea.anghelMihnea Anghel mihnea.anghel Data 28 ianuarie 2020 21:44:37
Problema Perle Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.45 kb
#include <fstream>
#define f in
#define g out

using namespace std;
ifstream in ( "perle.in" );
ofstream out( "perle.out" );
int n, i, j, T;
int A(), B(), C();
int v[10009];

int A(){
    if ( i == n+1 ) return 0;
    if ( v[i] == 1 || v[i] == 2 || v[i] == 3 ){
        i++;
        return 1;
    }
    return 0;
}

int B(){
    if ( i == n+1 )
        return 0;
    if ( v[i] == 2 ){
        //2B
        i++;
        return B();
    }
    if ( v[i] == 1 ){
        // 1A3AC
        i++;
        if ( !A() ) return 0;
        if ( v[i] != 3 ) return 0;
        i++;
        if ( !A() ) return 0;
        return C();
    }
    return 0;
}

int C(){
    if ( i == n+1 )
        return 0;
    if ( v[i] == 2 ){
        i++;
        return 1;
    }
    if ( v[i] == 3 ){
        //3BC
        i++;
        if ( !B() ) return 0;
        return C();
    }
    if ( v[i] == 1 ){
        //12A
        i++;
        if ( v[i] != 2 ){
            i++;
            return 0;
        }
        i++;
        return A();
    }
    return 0;
}

int main() {
    for ( f>>T; T--; ){
        f>>n;
        for ( i=1; i <= n; i++ )
            f>>v[i];
        i = 1;
        if ( A() && i == n+1 ){
            g<<"1\n";
            continue;
        }
        i = 1;
        if ( B() && i == n+1 ){
            g<<"1\n";
            continue;
        }
        i = 1;
        if ( C() && i == n+1 ){
            g<<"1\n";
            continue;
        }
        g<<"0\n";
    }
    return 0;
}