← OlimpiApp
Olimpico
Informatica · Strutture dati
Elementi mai rimossi dalla pila (NGE)
Il seguente algoritmo calcola, per ogni elemento di un array, il prossimo elemento maggiore alla sua destra usando una pila (stack) di indici:
stack = [] # pila di INDICI, valori a[i] tenuti in ordine decrescente
for i from 0 to n-1:
while stack is not empty and a[stack.top] < a[i]:
stack.pop() # ogni pop conta come UNA operazione
stack.push(i)
return total_popsApplicandolo all'array $[4, 7, 2, 9, 5, 1, 8, 3, 6]$ (indicizzato da $0$), quanti elementi dell'array non vengono mai rimossi dalla pila durante l'intera esecuzione (cioè restano nella pila fino alla fine, quando l'algoritmo termina)?