Cod sursa(job #1459798)

Utilizator akaprosAna Kapros akapros Data 10 iulie 2015 19:23:16
Problema Perle Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <cstdio>
#include <algorithm>
#include <cstring>
#define Nmax 10002
using namespace std;
int n, m, i, j;
int v[Nmax];
void B(int &i);
void C(int &i);
void B(int &i)
{
    if (v[i] == 2)
    {
        ++ i;
        B(i);
    } else
    if (v[i] == 1 && v[i + 2] == 3 && i + 4 < m)
    {
        i += 4;
        C(i);
    } else i = 0;
}
void C(int &i)
{
    if (i > m)
    {
        i = 0;
        return;
    }
    if (v[i] == 2)
        ++ i;
    else if (v[i] == 3 && i + 2 <= m)
    {
        ++ i;
        B(i);
        C(i);
    }
    else if (v[i] == 1 && v[i + 1] == 2)
        i += 3;
    else
        i = 0;
}
int main()
{
    freopen("perle.in", "r", stdin);
    freopen("perle.out", "w", stdout);
    scanf("%d\n", &n);
    while (n --)
    {
        scanf("%d ", &m);
        memset(v, 0, sizeof(v));
        for (i = 1; i <= m; ++ i)
            scanf("%d", &v[i]);
        i = 1;
        B(i);
        if (m == 1 || i == m + 1)
            printf("%d\n", 1);
        else
        {
            i = 1;
            C(i);
            if (i != m + 1)
                printf("%d\n",0);
            else printf("%d\n", 1);
        }
    }
    return 0;
}