Pagini recente » Cod sursa (job #1813016) | Cod sursa (job #2712457) | Cod sursa (job #2555687) | Cod sursa (job #3268413) | Cod sursa (job #3163777)
#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;
}