Cod sursa(job #138129)

Utilizator Pepelea_FlaviuFlaviu Pepelea Pepelea_Flaviu Data 17 februarie 2008 21:48:06
Problema Nivele Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
# include <stdio.h>

# define nmax 60000
# define FIN "nivele.in"
# define FOUT "nivele.out"

int T,i,n,j;
long max,a[2][nmax];

void solve(long max, long n)
{
 long i,j,niv=0,nev=1,aux,ct;
 for (i=max; i>=2; i--)
   {
    ct=0; j=1;
    while (j<=n)
      if (a[niv][j]==i&&a[niv][j+1]==i&&j<n)
        {
         a[nev][++ct]=i-1;
         j+=2;
        }
      else
        if (a[niv][j]==i&&a[niv][j+1]!=i)
          {
           printf("NU\n");
           return;
          }
         else
           {
            a[nev][++ct]=a[niv][j];
            j++;
           }
    if (n==ct)
      {
       printf("NU\n");
       return;
      }
    aux=niv; niv=nev; nev=aux; n=ct;
   }
 if (a[niv][1]==1) printf("DA\n");
              else printf("NU\n");
}
int main()
{
 freopen(FIN,"r",stdin);
 freopen(FOUT,"w",stdout);
 scanf("%d",&T);
 for (i=1; i<=T; i++)
   {
    scanf("%d",&n);
    max=0;
    for (j=1; j<=n; j++)
      {
       scanf("%ld",&a[0][j]);
       if (a[0][j]>max) max=a[0][j];
      }
    solve(max,n);
   }
 return 0;
}