Cod sursa(job #1855274)

Utilizator TimitocArdelean Andrei Timotei Timitoc Data 23 ianuarie 2017 16:05:17
Problema Nivele Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <iostream>
#include <cstdio>
#define MAXN 50050

using namespace std;

int t, n, a[MAXN];

int solve(int st, int &dr, int niv = 1)
{
    if (a[st] == niv)
    {
        dr = st;
        return 1;
    }
    if (a[st] < niv)
        return 0;
    int m, ok = 1;
    ok &= solve(st, m, niv+1);
    ok &= solve(m+1, dr, niv+1);
    return ok;
}

int main()
{
    freopen("nivele.in", "r", stdin);
    freopen("nivele.out", "w", stdout);

    scanf("%d", &t);
    while (t--) {
        scanf("%d", &n);
        for (int i = 1; i <= n; i++) {
            scanf("%d", &a[i]);
        }
        int dr;
        if (solve(1, dr) && dr == n)
            printf("DA\n");
        else
            printf("NU\n");
    }


    return 0;
}