Pagini recente » Autentificare | Arhiva de probleme | Cod sursa (job #1241372) | Cod sursa (job #2632950) | Cod sursa (job #137425)
Cod sursa(job #137425)
#include <cstring>
#include <cstdio>
#define dim 50001
int A[dim];
int N;
int K;
int Ok;
void Parc(int Nd, int Lv)
{
if(Lv > A[K])
{
Ok = 0;
return;
}
if(Lv == A[K]) ++ K;
else
{
Parc(2*Nd, Lv+1);
Parc(2*Nd+1, Lv+1);
}
}
int main()
{
freopen("nivele.in", "rt", stdin);
freopen("nivele.out", "wt", stdout);
int T;
for(scanf("%d", &T); T; --T)
{
memset(A, 0, sizeof(A));
int i;
for(scanf("%d", &N), i=1; i<=N; ++i)
scanf("%d", A+i);
Ok = 1;
K = 1;
Parc(1, 1);
if(K <= N) Ok = 0;
if(Ok) printf("DA\n");
else printf("NU\n");
}
fclose(stdin);
fclose(stdout);
return 0;
}