Cod sursa(job #2335602)

Utilizator radugheoRadu Mihai Gheorghe radugheo Data 4 februarie 2019 12:33:06
Problema Perle Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.68 kb
#include <bits/stdc++.h>

using namespace std;

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

int n, k, i, j, ver, ok;
int v[10005];
int A(), B(), C();

int main(){
    fin >> n;
    for (i=1; i<=n; i++){
        fin >> k;
        ok = 0;
        for (j=1; j<=k; j++){
            fin >> v[j];

        }
        j = 1;
        ver = A();
        if (j == k + 1 && ver){
            fout << "1\n";
            ok = 1;
        }
        j = 1;
        ver = B();
        if (j == k + 1 && ver){
            fout << "1\n";
            ok = 1;
        }
        j = 1;
        ver = C();
        if (j == k + 1 && ver){
            fout << "1\n";
            ok = 1;
        }
        if (ok == 0){
            fout << "0\n";
        }
    }
    return 0;
}

int A(){
    if (j == k + 1){
        return 0;
    }
    if (v[j] == 1 || v[j] == 2 || v[j] == 3){
        j++;
        return 1;
    }
    return 0;
}

int B(){
    if (j == k + 1){
        return 0;
    }
    if (v[j] == 2){
        j++;
        return B();
    }
    else if (v[j] == 1){
        j++;
        if (!A() || v[j] != 3)
            return 0;
        j++;
        if (!A())
            return 0;
        return C();
    }
    return 0;
}

int C(){
    if (j == k + 1){
        return 0;
    }
    if (v[j] == 2){
        j++;
        return 1;
    }
    else if (v[j] == 3){
        j++;
        if (!B())
            return 0;
        return C();
    }
    else if (v[j] == 1){
        j++;
        if (v[j] != 2){
            j++;
            return 0;
        }
        else{
            j++;
            A();
        }
    }
}