Vai al contenuto principale
← OlimpiApp Olimpico

Informatica · Strutture dati

Quante ampiezze di finestra raggiungono il minimo di rimozioni

Per calcolare il massimo di ogni finestra scorrevole di ampiezza $k$ su un array, si usa una coda a due estremità (deque) di indici, mantenuta sempre con i valori corrispondenti in ordine decrescente: per ogni nuovo elemento si rimuovono dal fondo della deque tutti gli indici il cui valore è $\le$ del nuovo elemento (perché non potranno mai più essere il massimo di nessuna finestra futura), poi si inserisce il nuovo indice in fondo; infine si rimuove dalla testa l'indice se è uscito dalla finestra corrente. Sia $T(k)$ il numero totale di rimozioni (testa+fondo, sommate su tutta l'esecuzione) ottenuto applicando l'algoritmo con ampiezza di finestra $k$.

Si applica l'algoritmo all'array $[6, 8, 10, 9, 7, 5, 4, 3, 1, 2]$ ($n=10$), calcolando $T(k)$ per $k=2,3,\dots,9$. Per quanti valori di $k$ in questo intervallo $T(k)$ raggiunge il proprio valore minimo possibile (cioè il più piccolo fra tutti i $T(k)$ calcolati in questo intervallo)?

La tua risposta

Vanno bene sia 3,14 sia 3.14.