Cod sursa(job #138018)

Utilizator alextheroTandrau Alexandru alexthero Data 17 februarie 2008 19:41:00
Problema Nivele Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.53 kb
#include <stdio.h>

#define nmax 50005

int n, p, T;
int st[nmax], a[nmax];

int solve()
{
	st[p = 1] = a[1];
	for(int i = 2; i <= n; i++)
	{
		if(a[i] < st[p]) return 0;
		st[++p] = a[i];
		while(p >= 2 && st[p] == st[p - 1]) p--, st[p]--;
	}

	if(p == 1 && st[p] == 1) return 1;
	return 0;
}

int main()
{
	freopen("nivele.in", "r", stdin);
	freopen("nivele.out", "w", stdout);
	
	for(scanf("%d", &T); T; T--)
	{
		scanf("%d", &n);
		for(int i = 1; i <= n; i++) scanf("%d", &a[i]);
		printf(solve() ? "DA\n" : "NU\n");
	}

	return 0;
}