Cod sursa(job #652736)

Utilizator GManiakGhenea Catalin GManiak Data 26 decembrie 2011 01:28:09
Problema Perle Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.58 kb

#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
ifstream f("perle.in");
ofstream h("perle.out");
int s[100002],n,i,k=0;
int b()
{
    if (s[i]==2)
        return 1;
    if (s[i]==1 && s[i+2]==3)
        return 2;
    return 0;
}
int c()
{
    if (s[i]==2)
        return 1;
    if(s[i]==3)
        return 2;
    if(s[i]==1 && s[i+1]==2)
        return 3;
    return 0;
}
void solvec();
void solveb()
{
    int nr;
    nr=b();
    if (i<n && nr )
    {
        if(nr==1)
        {   i++;
            solveb();
            k=0;
        }
        else if(nr==2)
        {
            i+=4;
            k=0;
			solvec();
        }
    }
}
void solvec()
{
    int nr;
    nr=c();
    if(nr && i<n)
    {
        if(nr==1)
        {   i++;
            k=1;
        }
        else if(nr==2)
        {
            i++;
            k=0;
            solveb();
            solvec();
        }
        else if(nr==3)
        {   
            i+=3;
            k=1;
        }   
    }
}
int main()
{
    int j,m;
    for(f>>m;m;m--)
    {
        f>>n;
        for(j=0;j<n;j++)
            f>>s[j];
        if(n==1)
            h<<1<<endl;
        else
        {
            i=0;
            solveb();
            if(i==n && k)
                h<<1<<endl;
            else
            {
                i=0;
                solvec();
                if(i==n && k)
                    h<<1<<endl;
                else
                    h<<0<<endl;
            }

        }
    }
    return 0;
}