Pagini recente » Cod sursa (job #2765435) | Cod sursa (job #3210359) | Cod sursa (job #2933103) | Cod sursa (job #2770476) | Cod sursa (job #1852195)
#include <bits/stdc++.h>
using namespace std;
ifstream f("nivele.in");
ofstream g("nivele.out");
const int NMax = 50001;
int t,n,start,nr,noduri;
int a[NMax],dist[NMax];
void dfs_preorder(int nod,int D){
dist[nod] = D;
if(nr > noduri)
return;
nr++;
if(dist[nod] == a[start]){
start++;
}else{
if(dist[nod] < a[start]){
dfs_preorder(2 * nod, D + 1);
dfs_preorder(2 * nod + 1, D + 1);
}
}
}
int main()
{
f >> t;
while(t--){
f >> n;
noduri = n * 2 - 1;
for(int i = 1; i <= n; ++i)
f >> a[i];
start = 1;
nr = 0;
dfs_preorder(1,1);
if(start == n + 1 && nr == noduri){
g << "DA" << '\n';
}else{
g << "NU" << '\n';
}
}
return 0;
}