Pagini recente » Cod sursa (job #773593) | Cod sursa (job #2524801) | Cod sursa (job #917322) | Cod sursa (job #2698647) | Cod sursa (job #137276)
Cod sursa(job #137276)
#include <cstdio>
#include <string>
#define maxn 50001
int a[maxn],n;
int nd,Nd;
int N,poz;
bool use[2*maxn];
inline void dfs(int n, int k)
{
use[n]=1;
int 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--)
{
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;
}