Cod sursa(job #137787)

Utilizator stef2nStefan Istrate stef2n Data 17 februarie 2008 14:48:08
Problema Nivele Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <cstdio>
#include <vector>
using namespace std;

const int MAX_N = 50005;

int N, level[MAX_N];
vector <int> v;

bool solve()
{
    v.clear();
    if(level[0]>N)
        return false;
    for(int i=1; i<level[0]; ++i)
        v.push_back(i);
    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);
    }
    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");
    }
    return 0;
}