Мне нужно позвонить друзьям, но кнопки моего беспроводного телефона не работают должным образом. Единственные кнопки, которые я могу нажать, это [Вверх], [Вниз] и [Вызов]. [Вверх] и [Вниз] можно использовать для навигации по моим последним вызовам, а [Вызов] можно использовать для вызова выбранного имени. В моем телефоне есть список Nпоследних звонков, и я знаю, что все друзья, которым мне нужно позвонить, находятся в этом списке.
Задача:
Вы получите номер Nи список имен L:
Nколичество последних звонков, которые может запомнить мой телефон;Lимеет имена в порядке, мне нужно позвонить.
Вы должны вывести количество нажатий кнопок, которое мне нужно сделать, при оптимальном расположении списка недавних вызовов.
Пример:
-> Ввод:
Звоню Анне, Бобу, а потом снова Анне. С последними звонками список размером 5.
5
Anna
Bob
Anna
-> Вывод:
Возможное оптимальное расположение: Anna, Foo, Bar, Foobar, Bob
5 # Key presses: [Call] Anna, [Up] + [Call] Bob, [Down] + [Call] Anna
Больше тестовых случаев:
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
Правила:
- Ваш курсор всегда будет начинаться с первой позиции списка;
- Вы можете взять ввод
NиLиз любого источника: клавиатура, параметры, файл и т. Д .; - Имена в списке могут быть в любом приемлемом формате, таком как: строки, целые числа, символы;
- Когда вы дойдете до конца списка последних вызовов и снова нажмете [Вниз], курсор переместится. То же самое происходит, когда вы находитесь в начале списка недавних вызовов и нажимаете [Up];
- Когда вы звоните кому-то, его имя будет перемещено на первую позицию в списке последних вызовов, а остальные будут сдвинуты вниз;
- Когда вы звоните кому-то, ваш курсор будет перемещен в первую позицию;
- Имя друга не может появляться более одного раза в списке последних вызовов;
- Вы можете заполнить список последних звонков фиктивными записями (см. Пример);
- Количество звонящих друзей не будет больше, чем
N.