Cod sursa(job #2534998)

Utilizator Iustin01Isciuc Iustin - Constantin Iustin01 Data 31 ianuarie 2020 11:51:42
Problema Perle Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.72 kb
#include <bits/stdc++.h>
using namespace std;

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

int n, v[10001], k, x;
bool g;

int A();
int B();
int C();

int A(){
    if(x > n)
        return false;
    if(v[x] == 1 || v[x] == 2 || v[x] == 3){
            x++;
            return true;
    }
    return false;
}


int B(){
    if(x > n)
        return false;
    if(v[x] == 2){
        x++;
        return B();
    }
    else
        if(v[x]==1){
            x++;
            int k = A();
            if(!k)
                return false;
            if(v[x] != 3)
                return false;
            x++;
            k = A();
            if(!k)
                return false;
            return C();
        }
        else return false;
}

int C(){
    if(x > n)
        return false;
    if(v[x] == 2){
        x++;
        return true;
    }
     else
        if(v[x] == 1){
            x++;
            if(v[x] != 2){
                x++;
                return false;
            }
            else{
                x++;
                return A();
            }
        }
        else{
            x++;
            int k = B();
            if(!k)
                return false;
            return C();
        }
    return false;
}


int main(){
    in>>k;
    for(int i = 1; i <= k; i++){
        in>>n;
        for(int j = 1; j <= n; j++)
            in>>v[j];
        x = 1;
        g = false;
        if(A() == true && x > n) g = true;
        else x = 1;

        if(B() == true && x > n && g == false) g = true;
        else x = 1;

        if(C() == true && x > n && g == false) g = true;
        else x = 1;
        out<<g<<"\n";
    }
}