LabASD - Trova il minimo numero di telefono duplicato

Moreno Marzolla moreno.marzolla@unibo.it

Ultimo aggiornamento: 2021-04-07

Siete stati assunti come consulenti dalla IATM S.p.A. (Importante Azienda di Telefonia Mobile) che è alle prese con il problema seguente. L'azienda ha un file contenente \(n\) numeri di telefono, \(200000 < n \leq \mathtt{MAXN}\). Tutti i numeri hanno sei cifre, la prima delle quali può essere 3 oppure 5; il contenuto del file non è ordinato.

Nel file sono sicuramente presenti duplicati, perché contiene più elementi di quanti siano i numeri distinti strutturati come sopra. Esiste quindi almeno un numero di telefono che compare più di una volta. Il vostro compito è di implementare un algoritmo efficiente che calcoli il minimo numero di telefono che compare più di una volta nel file di input.

Il file di input è strutturato come segue:

tel_0
tel_1
...
tel_n-1

dove \(n\) indica il numero di numeri di telefono presenti nel file, e tel_0, ... tel_n-1 sono gli \(n\) numeri di telefono, uno per riga.

Per approfondire

Forse la parte più complicata di questo esercizio è la generazione dei file di input. Dato un intero \(n\) e un numero di telefono \(t\), come fareste per generare un input in cui il minimo numero di telefono ripetuto almeno due volte sia esattamente \(t\)?

File