Cod sursa(job #1362000)

Utilizator CiurezAndreiCiurez Marius-Andrei CiurezAndrei Data 26 februarie 2015 09:15:30
Problema Perle Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.32 kb
#include <fstream>
#include <limits.h>
#define DIM 10010
using namespace std;

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

int n, lenght, v[DIM];

void citire();
void solve();
int perla_B(int i);
int perla_C(int i);

void citire(){
    fin >> n;
    for(int i = 1; i <= n; i ++)
    {
        fin >> lenght;
        for(int j = 1; j <= lenght; j ++)
        {
            fin >> v[j];
        }

        if(lenght == 1)
        {
            fout << 1 << '\n';
            continue;
        }
        else
        {
            solve();
        }
    }
}
void solve(){
    if(perla_B(1) == lenght || perla_C(1) == lenght)
    {
        fout << 1 << '\n';
    }
    else
    {
        fout << 0 << '\n';
    }
}


int perla_B(int i){

    if(i > lenght)
    {
        return INT_MAX;
    }

    if(v[i] == 2)
    {
        return perla_B(i + 1);
    }

    if(v[i] == 1 && v[i + 2] == 3)
    {
        return perla_C(i + 4);
    }

}

int perla_C(int i){

    if(i > lenght)
    {
        return INT_MAX;
    }
    if(v[i] == 2)
    {
        return i;
    }

    if(v[i] == 1 && v[i + 1] == 2)
    {
        return i + 2;

    }
    if(v[i] == 3)
    {
        return perla_C(perla_B(i + 1) + 1);
    }
}
int main()
{
    citire();
    return 0;
}