Cod sursa(job #1115854)

Utilizator RobertMMinzat Robert RobertM Data 22 februarie 2014 09:25:54
Problema Perle Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
#include <fstream>
#include <string>
#include <cstring>
#define max(a, b), (a>b)? a:b

using namespace std ;

const int NMAX = 10005 ;

ifstream cin("perle.in") ;
ofstream cout("perle.out") ;

int T, N;
int S[NMAX] ;
int i;
int C() ;

int B()
{

    if(i > N) return 0 ;
    if(S[i] == 2)
    {
        ++ i ;
        return B();
    }
    if(S[i] == 1 && S[i + 2] == 3)
    {
        i = i + 4 ;
        return C() ;
    }
    return 0 ;
}


int C()
{
    if(i > N) return 0 ;
    if(S[i] == 2)
    {
        ++ i ;
        return 1 ;
    }
    if(S[i] == 3)
    {
        ++ i;
        if(B()) return C() ;
    }
    if(S[i] == 1 && S[i + 1] == 2 && i + 2 <= N)
    {
        i = i + 3 ;
        return 1 ;
    }
    return 0 ;
}



int main()
{
    cin >> T ;

    while(T)
    {
        cin >> N ;
        for( i = 1 ; i <= N ; ++ i)
            cin >> S[i] ;
            i = 1 ;
        if(N == 1)
        {
            cout << 1 << '\n' ;
            //return 0 ;
        }
        else if(S[1] == 2 || ( S[1] == 1 && S[3] == 3 && N>=5 )) cout << B() << '\n' ;
        else cout << C() << '\n' ;
        -- T;
    }

    cin.close();
    cout.close();
    return 0;