Cod sursa(job #137425)

Utilizator raula_sanChis Raoul raula_san Data 17 februarie 2008 12:06:25
Problema Nivele Scor 60
Compilator cpp Status done
Runda preONI 2008, Runda 4, Clasele 11-12 Marime 0.67 kb
#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;
}