Cod sursa(job #700950)

Utilizator tzipleatudTudor Tiplea tzipleatud Data 1 martie 2012 12:43:36
Problema Perle Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <fstream>
#define L 10010
#include <cstring>

using namespace std;

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

int T,n,v[L],i;

int PerlaB(int x);
int PerlaC(int x);

int main() {
    f >> T;
    for (;T;--T) {
        memset(v,0,sizeof(v));
        f >> n;
        for (i=1;i<=n;i++) f >> v[i];
        if (n==1 || (n>2 && (PerlaB(1)>=n || PerlaC(1)>=n))) g << 1 << '\n';
                                     else g << 0 << '\n';
    }
    f.close();g.close();
    return 0;
}

int PerlaB(int x) {
    if (x>n) return 0;
    if (v[x]==2) return PerlaB(x+1);
    if (x+3<n && v[x]==1 && v[x+2]==3) return PerlaC(x+4);
    return 0;
}
int PerlaC(int x) {
    if (v[x]==2) return x+1;
    if (x+1<n && v[x]==1 && v[x+1]==2) return x+3;
    if (v[x]!=3) return 0;
    x=PerlaB(x+1);
    if (x==0) return 0;
    return PerlaC(x);
}