Cod sursa(job #3163777)

Utilizator SSKMFSS KMF SSKMF Data 1 noiembrie 2023 06:18:55
Problema Nivele Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <fstream>
using namespace std;

ifstream cin ("nivele.in");
ofstream cout ("nivele.out");

int niveluri[50001] , vizitate , indice;
bool posibil;

void Parcurgere (const int nivel_actual)
{
    if (nivel_actual == niveluri[indice])
        { indice++; return; }

    vizitate++;
    if (niveluri[0] - vizitate < niveluri[indice] - nivel_actual)
        { posibil = false; return; }

    Parcurgere(nivel_actual + 1);

    if (!posibil)
        { return; }

    if (indice > niveluri[0])
        { posibil = false; return; }

    if (niveluri[0] - vizitate < niveluri[indice] - nivel_actual)
        { posibil = false; return; }

    Parcurgere(nivel_actual + 1);
}

int main ()
{
    int numar_teste;
    cin >> numar_teste;

    while (numar_teste--)
    {
        cin >> niveluri[0];

        for (int indice = 1 ; indice <= niveluri[0] ; indice++) {
            cin >> niveluri[indice];
        }

        posibil = true;
        indice = 1;

        Parcurgere(1);

        cout << (posibil ? "DA\n" : "NU\n");
    }

    cout.close(); cin.close();
    return 0;
}