Cod sursa(job #137607)

Utilizator victorsbVictor Rusu victorsb Data 17 februarie 2008 12:47:49
Problema Nivele Scor 100
Compilator cpp Status done
Runda preONI 2008, Runda 4, Clasele 11-12 Marime 0.66 kb
#include <cstdio>

#define Nmax 50015

int n, vf;
int sir[Nmax];
int st[Nmax];

void citire()
{
	int i;

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

void solve()
{
	int i, ok = 1;

	st[vf = 1] = sir[1];
	for (i = 2; i <= n; ++i)
	{
		if (sir[i] < st[vf])
		{
			ok = 0;
			break;
		}
		st[++vf] = sir[i];
		while (vf > 1 && st[vf] == st[vf - 1])
		{
			--vf;
			--st[vf];
		}
	}
	if (vf != 1 || st[vf] != 1) ok = 0;
	if (ok) printf("DA\n");
	else printf("NU\n");
}

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

	int i, t;

	scanf("%d\n", &t);
	for (i = 1; i <= t; ++i)
	{
		citire();
		solve();
	}

	return 0;
}