Cod sursa(job #983400)

Utilizator stefanzzzStefan Popa stefanzzz Data 11 august 2013 18:21:44
Problema Nivele Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <fstream>
#define MAXN 50005
using namespace std;
ifstream f("nivele.in");
ofstream g("nivele.out");

int t,i,n,a[MAXN],act,lvl;
bool dr[MAXN];

bool verifica(bool st);

int main()
{
    f>>t;
    while(t--){
        f>>n;
        for(i=1;i<=n;i++)
            f>>a[i];
        for(i=1;i<=n;i++)
            dr[i]=0;
        act=1;
        if(a[1]>n){
            g<<"NU\n";
            continue;}
        if(verifica(1))
            g<<"DA\n";
        else
            g<<"NU\n";}
    f.close();
    g.close();
    return 0;
}

bool verifica(bool st){
    int i;
    act++;
    if(a[act]>n)
        return 0;
    if(act==n+1){
        for(i=2;i<=a[act-1];i++)
            if(!dr[i])
                return 0;
        return 1;}
    if(st){
        if(a[act]==a[act-1]){
            dr[a[act]]=1;
            return verifica(0);}
        else{
            dr[a[act-1]]=1;
            return verifica(1);}}
    for(i=a[act-1];dr[i];i--)
        dr[i]=0;
    dr[i]=1;
    if(a[act]==i)
        return verifica(0);
    else
        return verifica(1);}