Cod sursa(job #1612864)

Utilizator sucureiSucureiRobert sucurei Data 25 februarie 2016 07:34:20
Problema Perle Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <fstream>
#include <string>

using namespace std;

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

int Vec[10010],i,j,n,m,l,t;
string ans;

int PerlaC(int poz);

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

    if( Vec[ poz ] == 2 )
        return PerlaB( poz + 1 );
    else if( Vec[ poz ] == 1 && Vec[ poz + 2 ] == 3 )
        return PerlaC( poz + 4 );

    return 0;
}

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

    if( Vec[ poz ] == 2 )
        return poz;
    if( Vec[ poz ] == 1 && Vec[ poz + 1 ] == 2 )
        return poz + 2;
    if( Vec[ poz ] == 3 )
    {
        int CatSaSar = PerlaB( poz + 1 );

        if( CatSaSar )
            return PerlaC( CatSaSar + 1 );
    }

    return 0;
}

int main()
{
    fin>>t;
    for( j = 1 ; j <= t ; ++j )
    {
        fin>>n;

        for( i = 1 ; i <= n ; ++i )
            fin>>Vec[ i ];

        if( n == 1 )
            ans += "1\n";
        else
        {
            if( PerlaB( 1 ) == n || PerlaC( 1 ) == n )
                ans += "1\n";
            else
                ans += "0\n";
        }

    }

    fout<<ans;
}