Devo chiamare i miei amici ma i pulsanti del mio telefono cordless non funzionano correttamente. Gli unici pulsanti che posso premere sono [Su], [Giù] e [Chiama]. [Su] e [Giù] possono essere usati per navigare nelle mie ultime chiamate e [Chiama] può essere usato per chiamare il nome selezionato. Il mio telefono ha un elenco che contiene N
le chiamate recenti e so che tutti gli amici che devo chiamare sono in questo elenco.
Compito:
Riceverai un numero N
e un elenco di nomi L
:
N
è il numero di chiamate recenti che il mio telefono può ricordare;L
ha i nomi nell'ordine che devo chiamare.
È necessario emettere il numero di pressioni dei pulsanti che devo effettuare in una disposizione ottimale dell'elenco delle chiamate recenti.
Esempio:
-> Ingresso:
Chiamando di nuovo Anna, Bob e poi Anna. Con un elenco di chiamate recenti di dimensioni 5.
5
Anna
Bob
Anna
-> Uscita:
Possibile disposizione ottimale: Anna, Foo, Bar, Foobar, Bob
5 # Key presses: [Call] Anna, [Up] + [Call] Bob, [Down] + [Call] Anna
Altri casi di test:
Input: 5, Anna, Bob, Carl
Output: 5
Input: 5, Anna, Bob, Carl, Anna
Output: 8
Input: 5, A, B, C, D, E, A
Output: 11
Input: 6, A, B, C, D, E, A
Output: 12
Input: 4, A, B, C, B, A
Output: 10
Regole:
- Il cursore inizierà sempre nella prima posizione dell'elenco;
- Puoi prendere l'input
N
eL
da qualsiasi fonte: tastiera, parametri, file, ecc; - I nomi nell'elenco possono essere in qualsiasi formato ragionevole come: stringhe, numeri interi, caratteri;
- Quando si raggiunge la fine dell'elenco delle chiamate recenti e si preme di nuovo [Giù], il cursore si sposta intorno. Lo stesso accade quando si è all'inizio dell'elenco delle chiamate recenti e si preme [Su];
- Quando chiami qualcuno, il nome di quella persona verrà spostato nella prima posizione dell'elenco delle chiamate recenti e il resto verrà spostato verso il basso;
- Quando chiami qualcuno, il cursore verrà spostato nella prima posizione;
- Il nome di un amico non può apparire più di una volta nell'elenco delle chiamate recenti;
- È possibile compilare l'elenco delle chiamate recenti con voci fittizie (vedere esempio);
- Il numero di amici da chiamare non sarà maggiore di
N
.