Cod sursa(job #288355)

Utilizator flamecataCiobanu Alexandru-Catalin flamecata Data 25 martie 2009 18:59:10
Problema Perle Scor 100
Compilator cpp Status done
Runda aa Marime 2.13 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;   
}