Cod sursa(job #425806)

Utilizator laserbeamBalan Catalin laserbeam Data 26 martie 2010 09:39:09
Problema Nivele Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
// Catalin Balan
// Fri Mar 26 09:31:48 EET 2010
// PreONI 2008 - Nivele

#include <cstdio>
#include <cstdlib>

using namespace std;

#define NMAX 50005
#define CHUNK 8192

#define FIN "nivele.in"
#define FOUT "nivele.out"

char g_buf[CHUNK];
int g_p=CHUNK-1;

inline int get()
{

	int x = 0;
	while (g_buf[g_p] < '0' || g_buf[g_p] > '9')
		if (++g_p == CHUNK) fread(g_buf,1,CHUNK,stdin), g_p=0;

	while (g_buf[g_p] >= '0' && g_buf[g_p] <= '9')
	{
		x = x*10 + g_buf[g_p]-'0';
		if (++g_p == CHUNK) fread(g_buf,1,CHUNK,stdin), g_p=0;
	}
	return x;
}

int S[NMAX], n, nr;

int main(int argv, char ** argc)
{
	freopen(FIN, "r", stdin);
	freopen(FOUT, "w", stdout);

	
	for (int nrTests = get(); nrTests; --nrTests)
	{
		n = get();
		S[1] = get();
		nr = 1;
		for (int i = 2; i <= n; ++i)
		{
			S[++nr] = get();
			while (S[nr] == S[nr-1] && S[nr] != 1)
				--S[--nr];
		}
		if (nr == 1 && S[1] == 1) printf("DA\n");
		else printf("NU\n");
	}
	
	return EXIT_SUCCESS;
}