Pagini recente » Cod sursa (job #2898100) | Cod sursa (job #2675032) | Cod sursa (job #2898101) | Cod sursa (job #2702071) | Cod sursa (job #1852209)
#include <bits/stdc++.h>
using namespace std;
ifstream f("nivele.in");
ofstream g("nivele.out");
const int NMax = 100001;
int t,n,start,nr,noduri;
int a[NMax],dist[NMax];
void dfs_preorder(int nod,int D){
if(nr > noduri || start > n || nod > noduri)
return;
nr++;
dist[nod] = D;
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;
//g << 1.0*sizeof(a)*2/1024/1024 << '\n';
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;
}