Pagini recente » Cod sursa (job #2974967) | Cod sursa (job #132676) | Cod sursa (job #149564) | Teoria jocurilor | Cod sursa (job #137360)
Cod sursa(job #137360)
#include <stdio.h>
#include <vector>
using namespace std;
#define NMAX 120000
long int a[NMAX];
long int i,j,k,n,m,T,st[NMAX],vf,poz,ok;
int DF(long int nod, long int dpth)
{
if (dpth>a[poz]) return 0;
if (dpth==a[poz])
{
poz++;
k++;
return 1;
}
long int ok1;
st[++vf]=++k;
ok1=DF(st[vf],dpth+1);
if (poz>n) return 0;
if (ok1==0) return 0;
ok1=DF(st[vf],dpth+1);
if (ok1) return 1;
return 0;
}
int main()
{
freopen("nivele.in","r",stdin);
freopen("nivele.out","w",stdout);
for (scanf("%ld",&T);T;T--)
{
scanf("%ld",&n);
for (i=1;i<=n;i++)
scanf("%ld",&a[i]);
ok=0;
for (i=1;i<=n;i++)
if (a[i]>2*n-1) {
printf("NU\n");
ok=1;
break;
}
if (ok) continue;
k=0;
vf=0;poz=1;
ok=DF(1,1);
if (k!=2*n-1) {printf("NU\n");continue;}
if (ok) printf("DA\n");
else printf("NU\n");
}
return 0;
}