Cod sursa(job #1852213)

Utilizator VladTiberiuMihailescu Vlad Tiberiu VladTiberiu Data 20 ianuarie 2017 16:56:45
Problema Nivele Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#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];

void dfs_preorder(int nod,int D){
    if(nr > noduri || start > n)
        return;
    nr++;

    if(D == a[start]){
        start++;
    }else{
        if(D < 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;
}