Vai al contenuto principale
← OlimpiApp Olimpico

Informatica · Strutture dati

Indice che provoca più pop in un solo passo (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_pops

Applicandolo all'array $[3, 9, 1, 7, 5, 8, 2, 6, 4]$ (indicizzato da $0$), qual è l'indice $i$ dell'elemento che, nel momento in cui viene inserito, provoca il maggior numero di operazioni di pop in quel singolo passo? (È garantito che tale indice sia unico.)

La tua risposta

Vanno bene sia 3,14 sia 3.14.