Cod sursa(job #138173)

Utilizator georgianaGane Andreea georgiana Data 17 februarie 2008 22:38:46
Problema Nivele Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <stdio.h>

#define Nmax 50001
int n,nt, niv[Nmax], urm[Nmax];

int arb(int k)
{
    if (k&&!urm[k]) return 0;
    while (niv[k]!=niv[urm[k]] && arb(urm[k]));
    if (niv[k]==niv[urm[k]])
    {
        niv[k]--;
        urm[k]=urm[urm[k]];
        return 1;
    }
    return 0;    
}
int main()
{
    freopen("nivele.in","r",stdin);
    freopen("nivele.out","w",stdout);
    scanf("%d",&nt);
    while (nt--)
          {
                scanf("%d",&n);
                for (int i=0;i<n;i++)
                    {
                         scanf("%d",&niv[i]);
                         urm[i]=i+1;
                    }
                urm[n-1]=0;
                while (urm[0] && arb(0));
                if (!urm[0] && niv[0]==1) printf("DA\n");
                else printf("NU\n");
          }
    return 0;
}