Pagini recente » Cod sursa (job #566271) | Cod sursa (job #1937771) | Cod sursa (job #693246) | Cod sursa (job #2843369) | Cod sursa (job #137741)
Cod sursa(job #137741)
#include <cstdio>
#include <string>
#include <cstdlib>
#define maxn 50001
int a[maxn],n;
int nd,Nd;
int N,poz;
bool use[2*maxn];
//char ax[600001];
inline void dfs(unsigned short n, unsigned short k)
{
use[n]=1;
unsigned short p=0;
if(poz==Nd+1) return;
if(a[poz]==k) {++poz;return;}
if(a[poz]>k)
{
N+=2;
p=N;
dfs(N-1, k+1);
}
if(p!=0)
dfs(p, k+1);
}
void solve()
{
N=1;
poz=1;
memset(use,0, sizeof(use));
dfs(1,1);
int ok=1;
int NN=2*n-1;
for(int i=1;i<=NN;++i)if(!use[i]) { ok=0;break;}
// for(int i=1;i<=NN;++i) printf("%d ", use[i]);
if(ok && poz==n+1 && N==nd )printf("DA\n");
else printf("NU\n");
}
int main()
{
int T,i;
freopen("nivele.in","r",stdin);
freopen("nivele.out","w",stdout);
scanf("%d\n", &T);
while(T--)
{
/*
gets(ax);
char *t=strtok(ax, " ");
n=atoi(t);
for(i=1;i<=n;++i)
{
t=strtok(0," ");
a[i]=atoi(t);
}
*/
scanf("%d ", &n);
for(i=1;i<=n;++i) scanf("%d ", a+i);
nd=2*n-1;
Nd=n;
solve();
// for(i=1;i<=n;++i)printf("%d ", a[i]);
// printf("\n");
}
return 0;
}