Cod sursa(job #137268)

Utilizator damaDamaschin Mihai dama Data 17 februarie 2008 10:43:33
Problema Nivele Scor 100
Compilator cpp Status done
Runda preONI 2008, Runda 4, Clasele 11-12 Marime 0.73 kb
#include <stdio.h>



int n, v[50001], stack[100010], t;


bool f();

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

	int test, i;

	scanf("%d", &t);

	for(test = 0; test < t; ++test)
	{
		scanf("%d", &n);
		for(i = 1; i <= n; ++i)
		{
			scanf("%d", &v[i]);
		}
		if(f())
		{
			printf("DA\n");
		}
		else
		{
			printf("NU\n");
		}
	}

	

	return 0;
}

bool f()
{
	int i, j;
	stack[0] = 1;
	stack[1] = 0;
	for(i = 1; i <= n; ++i)
	{
		if(v[i] >= stack[stack[0]])
		{
			for(j = stack[stack[0]--] + 1; j <= v[i]; ++j)
			{
				stack[++stack[0]] = j;
			}
			/*
			for(j = 1; j <= stack[0]; ++j)
			{
				printf("%d ", stack[j]);
			}
			printf("\n");
			*/
		}
		else
			return 0;
	}
	return (stack[0] == 1);
}