Pagini recente » Cod sursa (job #3237921) | Cod sursa (job #3241437) | Cod sursa (job #1627083) | Cod sursa (job #2371142) | Cod sursa (job #137762)
Cod sursa(job #137762)
//#define _DEBUG_
#include <cstdio>
#include <vector>
#ifdef _DEBUG_
#include <iostream>
#endif
using namespace std;
const int MAX_N = 50005;
int N, level[MAX_N];
vector <int> v;
#ifdef _DEBUG_
void print()
{
for(size_t i=0; i<v.size(); ++i)
cerr<<v[i]<<" ";
cerr<<endl;
}
#endif
bool solve()
{
v.clear();
if(level[0]>N)
return false;
for(int i=1; i<level[0]; ++i)
v.push_back(i);
#ifdef _DEBUG_
print();
#endif
for(int i=1; i<N; ++i)
{
if(level[i]>N)
return false;
if(v.empty())
return false;
int tmp=v.back();
v.pop_back();
if(tmp>=level[i])
return false;
for(int j=tmp+1; j<level[i]; ++j)
v.push_back(j);
#ifdef _DEBUG_
print();
#endif
}
return v.empty();
}
int main()
{
freopen("nivele.in", "r", stdin);
freopen("nivele.out", "w", stdout);
int T;
for(scanf("%d", &T); T>0; --T)
{
scanf("%d", &N);
for(int i=0; i<N; ++i)
scanf("%d", &level[i]);
printf("%s\n", solve()==true ? "DA" : "NU");
#ifdef _DEBUG_
cerr<<endl;
#endif
}
return 0;
}