Cod sursa(job #285870)

Utilizator lolopolololopolo lolopolo Data 23 martie 2009 09:01:42
Problema Perle Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.95 kb
#include <fstream>

using namespace std;

int main()
{
    int n,np,v,i;
    char st[10002],vf=0;
    ifstream fin("perle.in");
    ofstream fout("perle.out");
    fin>>n;
    for(i=1;i<=n;i++)
    {
        fin>>np;
        if(np==1) {fin>>v;fout<<"1"<<"\n";}
        else
         {
           fin>>v;//prima perla
           if(v==3)st[vf=1]='C';
           else if(v==2)st[vf=1]='B';
                 else if(v==1&&np==3) st[vf=1]='C';
                      else st[vf=1]='B';
           int j,ok=1;
           for(j=1;j<=np;j++)
            {
            if(ok)
              {
                if(st[vf]=='A')st[vf]=v+'0';
                else if(st[vf]=='B')
                          if(v==2) st[++vf]='2';
                          else if(v==1) {st[vf]='C';
                                          st[++vf]='A';
                                          st[++vf]='3';
                                          st[++vf]='A';
                                          st[++vf]='1';
                                          }
                                 else ok=0;
                    else if(st[vf]=='C')
                           if(v==2) st[vf]='2';
                           else if(v==3) {st[++vf]='B';
                                           st[++vf]='3';
                                          }
                                else if(v==1)
                                          {
                                              st[vf]='A';
                                              st[++vf]='2';
                                              st[++vf]='1';
                                          }
                    if(ok)
                       if(st[vf]-'0'==v) vf--;
                                 else ok=0;

               }
               if(j<np) fin>>v;
            }
            if(ok&&vf==0) fout<<"1\n";
            else fout<<"0\n";
         }
    }
    fout.close();
    return 0;
}