Cod sursa(job #233720)

Utilizator Pepelea_FlaviuFlaviu Pepelea Pepelea_Flaviu Data 18 decembrie 2008 23:36:57
Problema Perle Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.21 kb
# include <cstdio>

# define FIN "perle.in"
# define FOUT "perle.out"
# define MAXN 10005

int N, M, i, j, ct, ok;
int L[MAXN];

    void verif(char s)
    {
        if (s == 'A') ++ct;
        if (s == 'B')
           {
              if (L[ct] == 2)
                 {
                    ++ct;
                    verif('B');
                 } else
              if (L[ct] == 1)
                 {
                    ++ct;
                    verif('A');
                    if (L[ct] == 3) ++ct;
                      else ok--;
                    verif('A');
                    verif('C');
                 } else
              ok--;
           }
        if (s == 'C')
           {
               if (L[ct] == 2) ++ct;
               if (L[ct] == 3)
                  {
                     ++ct;
                     verif('B');
                     verif('C');
                  }  else
               if (L[ct] == 1)
                  {
                      ++ct;
                      if (L[ct] == 2) ++ct;
                        else ok--;
                      verif('A');
                  }
           }
    }

    int main()
    {
        freopen(FIN,"r",stdin);
        freopen(FOUT,"w",stdout);
        
        scanf("%d",&N);
        
        for (i = 1; i <= N; ++i)
           {
              scanf("%d",&M);
              
              L[M + 1] = 0;
              for (j = 1; j <= M; ++j)
                 scanf("%d",&L[j]);
              
              ct = 1; ok = 0;
              
              verif('A');
              if (ct == M + 1 && !ok)
                 printf("1\n");
              else
                {
                   ct = 1; ok = 0;
                   verif('B');
                   if (ct == M + 1 && !ok)
                      printf("1\n");
                   else
                     {
                        ct = 1; ok = 0;
                        verif('C');
                        if (ct == M + 1 && !ok)
                           printf("1\n");
                        else
                           printf("0\n");
                     }
                }            
           }
        
        return 0;
    }