Cod sursa(job #1841523)

Utilizator DysKodeTurturica Razvan DysKode Data 5 ianuarie 2017 18:10:29
Problema Perle Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.26 kb
#include <bits/stdc++.h>

using namespace std;

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

#define f first
#define s second

int v[ 10010 ],i,j,n,m,t,k;

int perlaB( int poz );
int perlaC( int poz );
int main()
{
    #ifndef ONLINE_JUDGE
        #define cin fin
    #endif
    cin.tie( 0 );

    fin>>t;
    while( t-- )
    {
        fin>>n;
        for( i = 1 ; i <= n ; i++ )
            fin>>v[ i ];
        if( n == 1 )
            fout<<1<<'\n';
        else
        {
            if( perlaB( 1 ) == n || perlaC( 1 ) == n )
                fout<<1<<'\n';
            else
                fout<<0<<'\n';
        }
    }

return 0;
}



///returneaza pozitia pe care se termina sirul
int perlaB( int poz )
{
    if( poz > n )
        return 0;

    if( v[ poz ] == 2 )
        return perlaB( poz + 1 );
    if( v[ poz ] == 1 && v[ poz + 2 ] == 3 )
        return perlaC( poz + 4 );

    return 0;
}

int perlaC( int poz )
{
    if( poz > n )
        return 0;

    if( v[ poz ] == 2 )
        return poz;
    if( v[ poz ] == 3 )
    {
        int x = perlaB( poz + 1 );
        if( x == 0 )
            return 0;
        return perlaC( x + 1 );
    }
    if( v[ poz ] == 1 && v[ poz + 1 ] == 2 )
        return poz + 2;
    return 0;
}