Cod sursa(job #1447766)

Utilizator depevladVlad Dumitru-Popescu depevlad Data 5 iunie 2015 10:59:01
Problema Nivele Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <fstream>
#include <stack>

using namespace std;

#define inFile "nivele.in"
#define outFile "nivele.out"

ifstream in(inFile);
ofstream out(outFile);

stack < int > leafStack;

int main() {
    int T, n, i, leaf;

    in >> T;
    while(T--) {
        while(!leafStack.empty())
            leafStack.pop();
        in >> n;
        for(i = 1; i <= n; i++) {
            in >> leaf;
            if(leafStack.empty())
                leafStack.push(leaf);
            else if(leaf != leafStack.top())
                leafStack.push(leaf);
            else {
                while(!leafStack.empty() && leaf == leafStack.top())
                    leafStack.pop(), leaf--;
                leafStack.push(leaf);
            }
        }
        if(leafStack.top() == 1 && leafStack.size() == 1)
            out << "DA\n";
        else out << "NU\n";
    }

    return 0;
}