Cod sursa(job #981489)

Utilizator cristii23B. Criss cristii23 Data 7 august 2013 12:30:45
Problema Perle Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.84 kb
#include<fstream>
using namespace std;
int m[4][4],v[10400],i,j,ok,e,g,d,l,n,f,a;
ifstream fin("perle.in");
ofstream fout("perle.out");

int B();
int C();

int rezolvare()
{
    int aux;
    if(f==1)
    {
        f=0;
        a=1;
        if(v[1]==1 || v[1]==2)
            a=2;
        if(v[1]==3)
            a=3;
    }
    ok=0;
    for(j=1;j<=a && ok!=1;j++)
        if(m[a][j]%10==v[e])
            ok=1;
    if(ok==0)
    {
        g=0;
        return 0;
    }
    else
    {
        e++;
        aux=m[a][j-1]/10;
        while(aux)
        {
            if(aux%10<4)
            {
                if(aux%10==v[e])
                {
                    e++;
                }
                else
                {
                    g=0;
                    return 0;
                }
            }
            else
            {
                if(aux%10==4)
                {
                    if(v[e]>0)
                    {
                        e++;
                    }
                    else
                    {
                        g=0;
                        return 0;
                    }
                }
                else
                {
                    if(aux%10==5)
                    {
                        a=2;
                        rezolvare();
                        if(g==0)
                            return 0;
                    }
                    else
                    {
                        if(aux%10==6)
                        {
                            a=3;
                            rezolvare();
                            if(g==0)
                                return 0;
                        }
                        else
                        {
                            g=0;
                            return 0;
                        }
                    }
                }
            }
            aux=aux/10;
        }
    }
}
int main()
{
    m[2][1]=52;
    m[2][2]=64341;
    m[3][1]=2;
    m[3][2]=653;
    m[3][3]=421;
    fin>>n;
    for(i=1;i<=n;i++)
    {
        fin>>l;
        for(j=1;j<=l;j++)
        {
            fin>>v[j];
        }
        v[j]=0;
        if(l==1 || (l==3 && v[1]==1 && v[2]==2))
            fout<<"1"<<'\n';
        if(l==2 )
            fout<<"0"<<'\n';
        else
        {
            if(((v[1]==2 && v[2]==3) || (v[1]==3 && v[2]==3)) && l>2)
                fout<<"0"<<'\n';
            else
            {
                if(l>=3)
                {
                    e=1; g=1; f=1;
                    d=rezolvare();
                    if(e>=n && g==1)
                        fout<<"1"<<'\n';
                    else
                        fout<<"0"<<'\n';
                }
            }
        }
    }
return 0;
}