Cod sursa(job #1106452)

Utilizator diana97Diana Ghinea diana97 Data 12 februarie 2014 20:30:14
Problema Perle Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f ("perle.in");
ofstream g ("perle.out");

int n, l;
const int NMAX = 10000;
int s[NMAX + 3];

int B (int i);
int C (int i);

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


int C (int i) {
    if (i > l) return 0;
    if (s[i] == 2) return i;
    if (s[i] == 3) {
        int x = B (i + 1);
        if (x) return C (x + 1);
    }
    else if (s[i] == 1 && s[i + 1] == 2) return i + 2;
}

void rezolva () {
    f >> n;
    for (int i = 1; i <= n; i++) {
        f >> l;
        for (int j = 1; j <= l; j++) f >> s[j];
        if (l == 1) g << "1\n";
        else if (B (1) == l || C (1) == l) g <<"1\n";
        else g << "0\n";
    }
}


int main () {
    rezolva ();
    return 0;
}