Cod sursa(job #2351859)

Utilizator NashikAndrei Feodorov Nashik Data 22 februarie 2019 19:19:11
Problema Perle Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 4.2 kb
//#include <iostream>
#include <fstream>
#include <deque>
using namespace std;
deque<int> dq;
int v[10005];
int main()
{
    ifstream cin("perle.in");
    ofstream cout("perle.out");
    int t,n;
    cin>>t;
    for(int l=1;l<=t;l++){
        cin>>n;
        for(int i=1;i<=n;i++){
            cin>>v[i];
        }
        if(n==1){
            cout<<"1\n";
            continue;
        }
        while(dq.empty()==false)
            dq.pop_front();
        if(v[1]==1){
            if(n==3 and v[2]==2){
                cout<<"1\n";
                continue;
            }
        }
        int contor=1,curent=0;
        if(v[1]==1){
            ///incepe B
            dq.push_front('B');
            curent=2;
        }
        if(v[1]==2){
            ///incepe B
            dq.push_front('B');
            curent=2;
        }
        if(v[1]==3){
            dq.push_front('C');
            curent=3;
            ///incepe C
        }
        contor=1;

        bool ok=0;
        //cout<<"iop"<<curent<<" "<<contor<<"iop\n";
        while(contor<=n){
            //cout<<v[contor]<<"\n";
            if(dq.empty()==true){
                //cout<<"0\n";
                ok=1;
                ///cout<<"A iesit prin ->1<-\n";
                break;
            }
            char x=dq.front();
            dq.pop_front();
            if(v[contor]==1){
                if(x=='1'){
                }
                else
                if(x=='2'){
                    //cout<<0<<"\n";
                    ok=1;
                    ///cout<<"A iesit prin ->2<-\n";
                    break;
                }
                else
                if(x=='3'){
                    //cout<<"0\n";
                    ok=1;
                    ///cout<<"A iesit prin ->3<-\n";
                    break;
                }
                else
                if(x=='A'){
                }
                else
                if(x=='B'){
                    dq.push_front('C');
                    dq.push_front('A');
                    dq.push_front('3');
                    dq.push_front('A');
                }
                else
                if(x=='C'){
                    dq.push_front('A');
                    dq.push_front('2');
                }
            }
            else
            if(v[contor]==2){
                if(x=='1'){
                    //cout<<"0\n";
                    ok=1;
                //    cout<<"A iesit prin ->4<-\n";
                    break;
                }
                else
                if(x=='2'){
                }
                else
                if(x=='3'){
                    //cout<<"0\n";
                    ok=1;
                  //  cout<<"A iesit prin ->5<-\n";
                    break;
                }
                else
                if(x=='A'){
                }
                else
                if(x=='B'){
                    dq.push_front('B');
                }
                else
                if(x=='C'){

                }
            }
            else
            if(v[contor]==3){
                if(x=='1'){
                    //cout<<"0\n";
                    ok=1;
                    //cout<<"A iesit prin ->6<-\n";
                    break;
                }
                else
                if(x=='2'){
                    //cout<<"0\n";
                    ok=1;
                    //cout<<"A iesit prin ->7<-\n";
                    break;
                }
                else
                if(x=='3'){
                }
                else
                if(x=='A'){
                }
                else
                if(x=='B'){
                    //cout<<0<<"\n";
                    ok=1;
                    //cout<<"A iesit prin ->8<-\n";
                    break;
                }
                else
                if(x=='C'){
                    dq.push_front('C');
                    dq.push_front('B');
                }
            }
            contor++;
        }
        if(contor==n+1){
            if(dq.empty()==true and ok==0){
                cout<<1<<"\n";
            }
            else
                cout<<"0\n";
        }
        else
            cout<<"0\n";
        ///bagam initial B
        ///bagam ini tial C

    }
    return 0;
}