Cod sursa(job #138113)

Utilizator vladianavladiana micu vladiana Data 17 februarie 2008 21:26:59
Problema Nivele Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.31 kb
var fi,fo:text;
    n,i,T,k,max,j:longint;
    a:array[1..2,0..60000]of longint;
procedure solve(max,n:longint);
var j,i,niv,nev,aux,ct:longint;
begin
  niv:=1; nev:=2;
  for i:=max downto 2 do
    begin
      ct:=0;
      j:=1;
      a[niv,n+1]:=0;
      while j<=n do
        if (a[niv,j]=i)and(a[niv,j+1]=i)and(j<n) then
          begin
            inc(ct);
            a[nev,ct]:=i-1;
            inc(j,2);
          end
        else
          if (a[niv,j]=i)and(a[niv,j+1]<>i) then
            begin
              writeln(fo,'NU');
              exit;
            end
          else
            begin
              inc(ct);
              a[nev,ct]:=a[niv,j];
              inc(j);
            end;
      if n=ct then
        begin
          writeln(fo,'NU');
          exit;
        end;
      aux:=niv;
      niv:=nev;
      nev:=aux;
      n:=ct;
    end;
 if a[niv,1]=1 then writeln(fo,'DA')
               else writeln(fo,'NU');
end;
begin
  assign(fi,'nivele.in'); reset(fi);
  assign(fo,'nivele.out'); rewrite(fo);
  read(fi,T);
  for i:=1 to T do
    begin
      read(fi,n);
      max:=0;
      for j:=1 to n do
        begin
          read(fi,a[1,j]);
          if a[1,j]>max then max:=a[1,j];
        end;
      solve(max,n);
    end;
  close(fi);
  close(fo);
end.