Cod sursa(job #2000765)

Utilizator radu_cebotariRadu Cebotari radu_cebotari Data 14 iulie 2017 17:50:24
Problema Perle Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include<bits/stdc++.h>
using namespace std;
ifstream in("perle.in");
ofstream out("perle.out");
const int NMAX = 10005;

int v[NMAX],N;
int solve_b(int poz);
int solve_c(int poz);

void read()
{

    in>>N;
    for(int i = 1 ; i <= N ; ++i)
        in>>v[i];
    for(int i = N + 1 ; i <= NMAX - 5 ; ++i)
        v[i] = 0;
}

int solve_b(int poz)
{

    if(v[poz] == 2)
        return solve_b(poz + 1);
    else if(v[poz] == 1 && v[poz + 2] == 3)
        return solve_c(poz + 4);
    return 0;
}

int solve_c(int poz)
{

    if(v[poz] == 2)
        return poz + 1;
    else if(v[poz] == 3)
        return solve_c(solve_b(poz + 1));
    else if(v[poz] == 1 && v[poz+1] == 2)
        return poz + 3;
    return 0;
}

void solve()
{

    if(N == 1){
        out<<1<<"\n";
        return;
    }
    int sol1 = solve_b(1);
    int sol2 = solve_c(1);
    if(sol1 == N + 1 || sol2 == N + 1)
        out<<1<<"\n";
    else
        out<<0<<"\n";
}

int main()
{

    int T;
    in>>T;
    for( ; T ; --T)
    {

        read();
        solve();
    }
    return 0;
}