Cod sursa(job #137299)

Utilizator sims_glAlexandru Simion sims_gl Data 17 februarie 2008 11:04:57
Problema Nivele Scor 100
Compilator cpp Status done
Runda preONI 2008, Runda 4, Clasele 11-12 Marime 0.63 kb
#include <stdio.h>

#define nm 100100

int T, n, a[nm], st[nm];

int ok()
{
	int crt;

	st[0] = 1;
	st[1] = 0;
	
	for (int i = 1; i <= n; ++i) {
		if (st[0] < 1 || a[i] > n || st[st[0]] > a[i])
			return 0;

		if (st[st[0]] < a[i]) {
			crt = st[st[0]--] + 1;
			for (int j = crt; j <= a[i]; ++j)
				st[++st[0]] = j;
		} else
			--st[0];
	}

	return (st[0] == 1);
}

int main()
{
	freopen("nivele.in", "r", stdin);
	freopen("nivele.out", "w", stdout);

	scanf("%d", &T);

	for (int t = 1; t <= T; ++t) {
		scanf("%d", &n);

		for (int i = 1; i <= n; ++i)
			scanf("%d", &a[i]);

		if (ok())
			printf("DA\n");
		else
			printf("NU\n");
	}
}