Cod sursa(job #1373383)

Utilizator Burbon13Burbon13 Burbon13 Data 4 martie 2015 18:21:21
Problema Perle Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <cstdio>

using namespace std;

#define lmax 10005

int n,v[lmax];

void solve() ;
int eB( int p ) ;
int eC( int p ) ;

int main()
{
    int t ;
    freopen( "perle.in" , "r" , stdin ) ;
    freopen( "perle.out" , "w" , stdout ) ;
    scanf( "%d" , &t ) ;
    for ( ; t ; t -- )
        solve() ;
}

int eB( int p )
{
    if ( p > n )
        return 0 ;
    if ( v[p] == 2 )
        return eB( p + 1 ) ;
    if ( v[p] == 1 && v[p+2] == 3 )
        return eC( p + 4 ) ;
    return 0 ;
}

int eC( int p )
{
    if ( p > n )
        return 0 ;
    if ( v[p] == 2 )
        return p ;
    if ( v[p] == 1 && v[p+1] == 2 )
        return p + 2 ;
    if ( v[p] == 3 )
    {
        p = eB(p+1) ;
        if ( not p )
            return 0 ;
        return eC(p+1) ;
    }
    return 0 ;
}

void solve()
{
    scanf( "%d" , &n ) ;
    for ( int i = 1 ; i <= n ; i ++ )
        scanf( "%d" , &v[i] ) ;
    if ( n == 1 )
    {
        printf( "1\n" ) ;
        return ;
    }
    if ( eB(1) == n )
    {
        printf( "1\n" ) ;
        return ;
    }
    if ( eC(1) == n )
    {
        printf( "1\n" ) ;
        return ;
    }
    printf( "0\n" ) ;
}