Cod sursa(job #2360141)

Utilizator YetoAdrian Tonica Yeto Data 1 martie 2019 13:15:21
Problema Perle Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.61 kb
#include <fstream>
using namespace std;
int n, nr, v[10005], i, j, poz, k, m;
char x, st[10005];

int verif ()
{
    while (k>0) {
        x=st[k]; k--;
        if (x=='B') {
            if(v[poz]==3)
                return 0;
            else if (v[poz]==2) {
                k++; v[k]='B';
                poz++;
                if (poz>n-1)
                    return 0;
            }else if (v[poz]==1 && v[poz+2]==3) {
                st[++k]='C';
                poz+=4;
                if (poz>n||poz==n&&v[poz]!=2)
                    return 0;
            }else
                return 0;
        }else if (x=='C') {
            if (v[poz]==3) {
                st[++k]='C';
                st[++k]='B';
                poz++;
                if (poz>=n-4)
                    return 0;
            }else if (v[poz]==1 && v[poz+1]==2) {
                if (poz>n-2)
                    return 0;
            } else if (v[poz]==2) {
                if (poz>n-1)
                    return 0;
            }else
                return 0;
        }
    }

    return 1;
}

int main () {
    ifstream fin ("perle.in");
    ofstream fout ("perle.out");
    fin>>m;
    for (i=1;i<=m;i++) {
        fin>>n;
        for (j=1;j<=n;j++)
            fin>>v[j];

        if (n==1) {
            fout<<1<<"\n";
            continue;
        }

        k=0;
        st[++k]='B';
        poz=1;
        if (verif()) {
            fout<<1<<"\n";
            continue;
        }

        k=0;
        poz=1;
        st[++k]='C';
        fout<<verif()<<"\n";;
    }

    return 0;
}