Pagini recente » Cod sursa (job #1720194) | Cod sursa (job #1544990) | Problema satisfiabilităţii formulelor logice de ordinul doi | Cod sursa (job #1539098) | Cod sursa (job #137364)
Cod sursa(job #137364)
#include <stdio.h>
int n, v[50001], stack[100010], t;
bool f();
int main()
{
freopen("nivele.in", "r", stdin);
freopen("nivele.out", "w", stdout);
int test, i;
scanf("%d", &t);
for(test = 0; test < t; ++test)
{
scanf("%d", &n);
for(i = 1; i <= n; ++i)
{
scanf("%d", &v[i]);
}
if(f())
{
printf("DA\n");
}
else
{
printf("NU\n");
}
}
return 0;
}
bool f()
{
int i, j;
stack[0] = 1;
stack[1] = 0;
for(i = 1; i <= n; ++i)
{
if(v[i] != 1 && v[i] >= stack[stack[0]] && v[i] <= 3 * n)
{
for(j = stack[stack[0]--] + 1; j <= v[i]; ++j)
{
stack[++stack[0]] = j;
}
/*
for(j = 1; j <= stack[0]; ++j)
{
printf("%d ", stack[j]);
}
printf("\n");
*/
}
else
return 0;
if(stack[1] != 1)
return 0;
}
return (stack[0] == 1);
}