Cod sursa(job #137796)

Utilizator DastasIonescu Vlad Dastas Data 17 februarie 2008 14:50:07
Problema Nivele Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <cstdio>

const int maxn = 50001;

FILE *in = fopen("nivele.in","r"), *out = fopen("nivele.out","w");

int t;
int n, k;
int a[maxn];
int b[maxn];

int h;
void go(int d)
{
    ++h;
    if ( a[k] == h )
    {
        b[k++] = h;
        --h;
        return;
    }

    if ( k == n )
    {
        --h;
        return;
    }

    go(d+1);
    go(d+1);
    --h;
}

int main()
{
    fscanf(in, "%d", &t);

    while ( t-- )
    {
        fscanf(in, "%d", &n);
        k = 1;
        h = 0;
        for ( int i = 1; i <= n; ++i )
            fscanf(in, "%d", &a[i]);

        go(1);
        int i;
        for ( i = 1; i <= n; ++i )
            if ( a[i] != b[i] )
                fprintf(out, "NU\n"), i = n + 3;
        if ( i != n + 4 )
            fprintf(out, "DA\n");
    }


	return 0;
}