Pagini recente » Cod sursa (job #2367799) | Cod sursa (job #2292893) | Cod sursa (job #2008562) | Istoria paginii runda/oji_2006_10/clasament | Cod sursa (job #144477)
Cod sursa(job #144477)
#include <stdio.h>
#include <string.h>
#define Nmax 50005
unsigned int N,NN;
int T;
long A;
int st[Nmax],dr[Nmax],stiva[Nmax],lvl,nod;
int main()
{
freopen("nivele.in","r",stdin);
freopen("nivele.out","w",stdout);
scanf("%d",&T);
while (T)
{
--T;
scanf("%d",&NN);
N=NN;
nod=0;
lvl=1;
memset(st,0,sizeof(st));
memset(dr,0,sizeof(dr));
while (N)
{
--N;
scanf("%ld",&A);
if (A>NN) { lvl=-1;break; }
//get there
while ((dr[stiva[lvl]]!=0)&&(lvl>=1)) --lvl;
if (lvl<1) break;
while (lvl<A)
{
++nod;
if (st[stiva[lvl]]==0) st[stiva[lvl]]=nod;
else if (dr[stiva[lvl]]==0) dr[stiva[lvl]]=nod;
else break;
stiva[++lvl]=nod;
}
if ((lvl!=A)||(st[lvl]!=0)) { lvl=-1;break; }
--lvl;
}
while (N) { --N;scanf("%ld",&A); }
while (dr[stiva[lvl]]!=0 && lvl>0) --lvl;
if (lvl!=0) printf("NU\n");
else printf("DA\n");
}
fclose(stdout);
return 0;
}