Cod sursa(job #2331244)

Utilizator Balauta_AlbertBalauta Albert Balauta_Albert Data 29 ianuarie 2019 13:22:35
Problema Perle Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.17 kb

#include <bits/stdc++.h>

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

    int n,dim,j,ok;
    char c[25005],ch,a[25005];

void B();
void C();

void Citire()
{
    int i,k=-1;
    fin.getline(a,25005);
    dim=0;
    for(i=0;a[i]!=' ';i++)
        dim=dim*10+a[i]-'0';
    for(;a[i];i++)
        if(isdigit(a[i]))c[++k]=a[i];
}

void Clean()
{
    for(int i=dim-1;i>=0;i--)c[i]=NULL;
}

void B(bool da)
{
    if(da==1)j++;
    while(c[j]=='2')j++;
    if(c[j]=='1'&&c[j+2]=='3')
    {
     if(j+4>=dim)ok=0;
     else
        {
        j+=3;
        C();
        }
    }
}
void C()
{
    j++;
    if(c[j]=='2'&&j==dim-1)ok=1;
    else if(c[j]=='1'&&c[j+1]=='2'&&(dim-1==j+2))ok=1;
    else if(c[j]=='3')B(1);
}

int main()
{
    fin >> n;
    fin.get();
    for(int i=1;i<=n;++i)
    {
    Citire();
    ///fout <<dim <<" " << c << '\n';
    j=0;ok=2;
    if(dim==1)fout <<1 <<'\n';
    else if(dim==2)fout <<0 <<'\n';
    else while(j<dim&&ok==2)
    {
    if(c[j]=='2'||c[j]=='3')B(1);
    else B(0);
    C();
    }
    if(ok!=2)fout <<ok <<'\n';
    Clean();
    }

    return 0;
}