Cod sursa(job #2660143)

Utilizator marcumihaiMarcu Mihai marcumihai Data 18 octombrie 2020 13:16:51
Problema Perle Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <bits/stdc++.h>

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

int t;
int n,a[10005];

void citire ()
{
    f>>n;
    for(int i=1;i<=n;++i)
        f>>a[i];
}
/*
        A -> 1 | 2 | 3
       B -> 2B | 1A3AC
       C -> 2 | 3BC | 12A
*/
///returneaza pozitia
int rezC(int i);

int rezB(int i)
{
    if(i>n)
        return -1;
    if(a[i]==2)
        return rezB(i+1);
    if(a[i]==1 && a[i+2]==3)
        return rezC(i+4);
    return -1;

}
int rezC(int i)
{
    if(i>n)
        return -1;
    if(a[i]==2)
        return i;
    if(a[i]==3)
        return rezC(rezB(i+1)+1);
    if(a[i]==1 && a[i+1]==2)
        return i+2;
    return -1;
}
void rezolva()
{
    if(n==1 || rezB(1)==n || rezC(1)==n)
        g<<1;
    else
        g<<0;
    g<<"\n";

}
int main()
{
    f>>t;
    while(t--)
   {
       citire();
       rezolva();
   }

    return 0;
}