Cod sursa(job #67065)

Utilizator alex_mircescuAlex Mircescu alex_mircescu Data 22 iunie 2007 13:54:04
Problema Perle Scor 10
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.94 kb
var nr,vb1,n,i,j,dex,mam:longint;
    a:array[1..10000] of shortint;
    label 1,2;


procedure perlaB;forward;
procedure perlaC;forward;

procedure perlaB;
var ipr:longint;
begin
ipr:=0;
vb1:=0;
while (dex<nr) or (mam=1) do
  begin
   if ((a[dex]=1) and (mam=1)) or ((dex=1) and (a[dex]=1))then
     if a[dex+2]=3 then
       begin
        dex:=dex+4;
        mam:=1;
        perlaC;
       end
     else
       begin
        vb1:=1;
        exit;
       end
   else
     if ((a[dex]=2) and (mam=1)) or ((dex=1) and (a[dex]=2))then
       begin
        inc(dex);
        mam:=1;
       end
     else
       begin
        vb1:=1;
        exit;
       end;
   if (dex>=nr) and (mam=1) then begin vb1:=1;exit; end;
  end;
if dex>nr then begin vb1:=1; exit; end;
end;

procedure perlaC;
var ipr:longint;
begin
ipr:=0;
vb1:=0;
while (dex<nr) or (mam=1) do
  begin
   if (a[dex]=2) and (mam=1) then
     begin
      mam:=0;
      inc(dex);
     end
   else
     if ((a[dex]=3) and (mam=1)) or ((dex=1) and (a[dex]=3))then
       begin
        inc(dex);
        mam:=1;
        perlaB;
       end
     else
       if ((a[dex]=1) and (a[dex+1]=2) and (mam=1)) or ((dex=1) and (a[dex]=1) and (a[dex+1]=2))then
         begin
          mam:=0;
          dex:=dex+2;
         end
       else
         begin
          vb1:=1;
          exit;
         end;
   if (dex>=nr) and (mam=1) then begin vb1:=1;exit; end;
  end;
if dex>nr then begin vb1:=1; exit; end;
end;

begin
assign(input,'perle.in');
assign(output,'perle.out');
reset(input);
rewrite(output);
readln(n);
for i:=1 to n do
  begin
   if i>1 then writeln;
   read(nr);
   for j:=1 to nr do
     read(a[j]);
   dex:=1;
   mam:=0;
   perlaB;
   if vb1=1 then
     begin
      dex:=1;
      mam:=0;
      perlaC;
      if vb1=1 then write(0)
      else write(1);
     end
   else
     write(1);
  end;
close(input);
close(output);
end.