Testo 10
Testo 10
23/02/2023
Istruzioni
Risolvere il seguente esercizio implementando un programma in un singolo file .cpp, completo
di funzione main. Si presti particolare attenzione alla formattazione dell’input e dell’output,
e alla complessità target indicata per ciascuna funzionalità. Nel caso la complessità target
non sia specificata, si richiede che sia la migliore possibile. La lettura dell’input e la scrittura
dell’output DEVONO essere effettuate tramite gli stream cin e cout rispettivamente. La
correzione avverrà prima in maniera automatica inviando il file .cpp al server indicato in aula.
Quest’ultimo esegue dei test confrontando l’output prodotto dalla vostra soluzione con l’output
atteso. In caso la verifica abbia esito positivo sarà possibile consegnare il compito, il quale verrà
valuato dai docenti in termini di complessità. Si ricorda che è possibile testare la correttezza
del vostro programma in locale su un sottoinsieme dei input/output utilizzati nella seguente
maniera. I file di input e output per i test sono nominati secondo lo schema: input0.txt
output0.txt input1.txt output1.txt ... Per effettuare le vostre prove potete utilizzare il
comando del terminale per la redirezione dell’input. Ad esempio
effettua il test del vostro codice sui dati contenuti nel primo file di input, assumendo che
compilato contenga la compilazione della vostra soluzione e che si trovi nella vostra home di-
rectory. Dovete aspettarvi che l’output coincida con quello contenuto nel file output0.txt. Per
effettuare un controllo automatico sul primo file input input0.txt potete eseguire la sequenza
di comandi
Questa esegue la vostra soluzione e controlla le differenze fra l’output prodotto e quello corretto.
1
Esercizio
Si consideri un sistema per la gestione di alberi binari di ricerca (ABR) in grado di memorizzare
nodi ad etichette intere.
Dato un nodo x, si definisce dx come la distanza tra x e la radice dell’albero. Si definisce
inoltre lx come la massima distanza tra x e le foglie contenute nel sottoalbero radicato in esso;
Infine, un nodo x si dice mediano se i valori di lx e dx differiscono al piú di uno.
Si scriva un programma che
• stampi al piú le etichette dei primi K nodi mediani ordinati per etichetta in maniera non
decrescente.
L’input é formattato nel seguente modo: la prima riga contiene gli interi N e K separati da
uno spazio. Seguono N righe contenenti un’etichetta ciascuna.
L’output contiene gli elementi della soluzione, uno per riga.
Esempio
Input 10
6 2
10
5 5 20
20
15
30
25
15 30
Output
5
20 25