Cod sursa(job #272466)

Utilizator alex23alexandru andronache alex23 Data 7 martie 2009 09:19:40
Problema Nivele Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <iostream>
#define NMAX 50000

using namespace std;

FILE *f = fopen("nivele.in", "r"), *g = fopen("nivele.out", "w");

int T, N,a[NMAX], st[NMAX], nivel;
void afisare(char *sir)
{
	fprintf(g, "%s\n", sir);
}

int main()
{
	fscanf(f, "%d", &T);
	for (int k = 0; k < T; ++k)
	{
		fscanf(f, "%d", &N);
		for (int i = 0; i < N; ++i)
			fscanf(f, "%d", &a[i]);
		st[0] = a[0];
		nivel = 0;
		for (int i = 1; i < N; ++i)
		{
			if (a[i] != st[nivel])
			{
				st[++nivel] = a[i];
			}
			else
			{
				--st[nivel];
				while ((nivel > 0) && (st[nivel] == st[nivel - 1]))
				{
					--nivel;
					--st[nivel];
				}
				if (st[nivel] == 0)
				{
					afisare("NU");
					continue;
				}
			}
		}
		if ((nivel == 0) && (st[0] == 1))
		{
			afisare("DA");
		}
		else
		{
			afisare("NU");
		}
	}

	fclose(f);
	fclose(g);

	return 0;
}