Cod sursa(job #137818)

Utilizator ProstuStefan-Alexandru Filip Prostu Data 17 februarie 2008 15:01:26
Problema Nivele Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include <cstdio>

const int NMAX = 1 << 16;
const int VMAX = 52000;

typedef unsigned short tp;

tp T, N, K, Q, A[NMAX];

bool DFS(tp d) {
	if (K >= N || Q > N) return true;

	if (d == A[K]) {
		++K; return false;
	}

	++Q;
	return DFS(d+1) || DFS(d+1);
}

int main(void) {
	freopen("nivele.in", "rt", stdin);
#ifndef _SCREEN_
	freopen("nivele.out", "wt", stdout);
#endif
	int i, u;
	bool ok;
	
	scanf(" %hu", &T);
	while (T--) {
		scanf(" %hu", &N);

		ok = false;
		for (i = 0; i < N; ++i) {
			scanf(" %d", &u);
			A[i] = u;
			if (u > VMAX) ok = true;
		}

		K = 0; Q = 1;
		printf((ok || DFS(1) || K < N) ? "NU\n" : "DA\n");
	}

	return 0;
}