Pagini recente » Cod sursa (job #109300) | Cod sursa (job #2933507) | Cod sursa (job #2788135) | Cod sursa (job #1034535) | Cod sursa (job #137664)
Cod sursa(job #137664)
#include <cstdio>
using namespace std;
const char iname[] = "nivele.in";
const char oname[] = "nivele.out";
#define MAXN 50005
FILE *fi;
int n;
int X[MAXN];
bool sol;
int f(int i)
{
while (i > 1 && X[i] == X[i - 1])
X[i - 1] --, i --;
return i;
}
void work(int i)
{
while (i > 1 && X[i] == X[i - 1])
X[i-1] --, i --;
if (i == 1)
return ;
int j = f(i - 1);
if (X[i] != X[j])
sol = false;
else
X[j] --, work(j);
}
int main(void)
{
fi = fopen(iname, "r");
FILE *fo = fopen(oname, "w");
int css;
for (fscanf(fi, "%d", &css); css > 0; -- css)
{
fscanf(fi, "%d", &n);
for (int i = 1; i <= n; ++ i)
fscanf(fi, "%d", &X[i]);
sol = true;
work(n);
if (X[1] == 1 && sol)
fprintf(fo, "DA\n");
else
fprintf(fo, "NU\n");
}
fcloseall();
return 0;
}