Pagini recente » Cod sursa (job #3178377) | Cod sursa (job #2553838) | Cod sursa (job #2640517) | Cod sursa (job #108992) | Cod sursa (job #137231)
Cod sursa(job #137231)
type ref=^inr;
inr=record
x:longint;
next:ref;
end;
var f,g:text;
k,n,i,j,t,max,x:longint;
q2,p,u,q,pr:ref;
ok:boolean;
begin
assign(f,'nivele.in');reset(f);
assign(g,'nivele.out');rewrite(g);
readln(f,t);
for i:=1 to t do begin
read(f,n);
new(p);
p^.x:=0;
p^.next:=nil;
u:=p; pr:=p;
ok:=true;
for j:=1 to n do begin
read(f,x);
new(q);
q^.x:=x;
q^.next:=nil;
u^.next:=q;
u:=q;
if max<x then begin
max:=x;
q2:=q;
end;
end;
p:=pr^.next;
dispose(pr);
pr:=p;
while p<>q2 do p:=p^.next;
if (p^.next^.x<>p^.x)or (p^.next=nil) then ok:=false;
while ok and (n>1) do begin
n:=n-1;
p:=pr;
while p<>q2 do p:=p^.next;
p^.x:=p^.x-1;
q:=p^.next;
p^.next:=p^.next^.next;
dispose(q);
p:=pr; max:=0;
while p<> nil do begin
if p^.x>max then begin
max:=p^.x;
q2:=p;
end;
p:=p^.next;
end;
if (q2^.x<>q2^.next^.x)and (q2^.next=nil)then ok:=false;
if not(ok)and (n=1)then ok:=true;
end;
{if (n=1)and (q2^.x<>1)and ok then ok:=false;}
if ok then writeln(g,'DA')else writeln(g,'NU');
dispose(pr);
readln(f);
end;
close(f);
close(g);
end.