Ich muss meine Freunde anrufen, aber die Tasten meines schnurlosen Telefons funktionieren nicht richtig. Die einzigen Tasten, die ich drücken kann, sind [Auf], [Ab] und [Anrufen]. Mit [Auf] und [Ab] können Sie in meinen letzten Anrufen navigieren und mit [Anruf] den ausgewählten Namen aufrufen. Mein Telefon verfügt über eine Liste mit den N
letzten Anrufen, und ich weiß, dass alle Freunde, die ich anrufen muss, in dieser Liste enthalten sind.
Aufgabe:
Sie erhalten eine Nummer N
und eine Liste mit Namen L
:
N
ist die Anzahl der letzten Anrufe, an die sich mein Telefon erinnern kann;L
hat die Namen in der Reihenfolge, in der ich anrufen muss.
Sie müssen die Anzahl der Tastendrücke ausgeben, die ich in einer optimalen Anordnung der letzten Anrufliste ausführen muss.
Beispiel:
-> Eingabe:
Ich rufe Anna, Bob und dann wieder Anna an. Mit einer Liste der letzten Anrufe der Größe 5.
5
Anna
Bob
Anna
-> Ausgabe:
Mögliche optimale Anordnung: Anna, Foo, Bar, Foobar, Bob
5 # Key presses: [Call] Anna, [Up] + [Call] Bob, [Down] + [Call] Anna
Weitere Testfälle:
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
Regeln:
- Ihr Cursor startet immer an der ersten Position der Liste.
- Sie können die Eingabe
N
undL
von jeder Quelle nehmen: Tastatur, Parameter, Datei usw.; - Die Namen in der Liste können in jedem vernünftigen Format vorliegen, z. B.: Zeichenfolgen, Ganzzahlen, Zeichen;
- Wenn Sie das Ende der Liste der letzten Anrufe erreicht haben und erneut [Ab] drücken, bewegt sich der Cursor. Das gleiche passiert, wenn Sie am Anfang der Liste der letzten Anrufe stehen und [Nach oben] drücken.
- Wenn Sie jemanden anrufen, wird der Name dieser Person an die erste Position der Liste der letzten Anrufe verschoben und der Rest wird nach unten gedrückt.
- Wenn Sie jemanden anrufen, wird Ihr Cursor an die erste Position bewegt.
- Ein Freundesname kann in der Liste der letzten Anrufe nur einmal vorkommen.
- Sie können Ihre Liste der letzten Anrufe mit Dummy-Einträgen füllen (siehe Beispiel).
- Die Anzahl der anzurufenden Freunde ist nicht größer als
N
.