Pagini recente » Borderou de evaluare (job #2051286) | Cod sursa (job #1046585) | Cod sursa (job #372421) | Cod sursa (job #1594877) | Cod sursa (job #272466)
Cod sursa(job #272466)
#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;
}