Cod sursa(job #137360)

Utilizator devilkindSavin Tiberiu devilkind Data 17 februarie 2008 11:36:12
Problema Nivele Scor 70
Compilator cpp Status done
Runda preONI 2008, Runda 4, Clasele 11-12 Marime 1.08 kb
#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;
}