Tôi cần gọi cho bạn bè nhưng các nút trên điện thoại không dây của tôi không hoạt động bình thường. Các nút duy nhất tôi có thể nhấn là [Lên], [Xuống] và [Gọi]. [Lên] và [Xuống] có thể được sử dụng để điều hướng trong các cuộc gọi gần đây của tôi và [Gọi] có thể được sử dụng để gọi tên đã chọn. Điện thoại của tôi có một danh sách chứa N
các cuộc gọi gần đây và tôi biết rằng tất cả bạn bè tôi cần gọi đều nằm trong danh sách này.
Bài tập:
Bạn sẽ nhận được một số N
và một danh sách các tên L
:
N
là số cuộc gọi gần đây mà điện thoại của tôi có thể nhớ;L
có tên theo thứ tự tôi cần gọi.
Bạn phải xuất số lần nhấn nút tôi cần để sắp xếp tối ưu danh sách cuộc gọi gần đây.
Thí dụ:
-> Đầu vào:
Gọi Anna, Bob và sau đó Anna một lần nữa. Với một danh sách cuộc gọi gần đây của kích thước 5.
5
Anna
Bob
Anna
-> Đầu ra:
Sắp xếp tối ưu có thể: Anna, Foo, Bar, Foobar, Bob
5 # Key presses: [Call] Anna, [Up] + [Call] Bob, [Down] + [Call] Anna
Nhiều trường hợp thử nghiệm:
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
Quy tắc:
- Con trỏ của bạn sẽ luôn bắt đầu ở vị trí đầu tiên của danh sách;
- Bạn có thể lấy đầu vào
N
vàL
từ bất kỳ nguồn nào: bàn phím, tham số, tệp, v.v; - Các tên trong danh sách có thể ở bất kỳ định dạng hợp lý nào như: chuỗi, số nguyên, ký tự;
- Khi bạn đến cuối danh sách cuộc gọi gần đây và nhấn [Xuống] lần nữa, con trỏ của bạn sẽ bao quanh. Điều tương tự cũng xảy ra khi bạn bắt đầu danh sách các cuộc gọi gần đây và nhấn [Lên];
- Khi bạn gọi cho ai đó, tên của người đó sẽ được chuyển đến vị trí đầu tiên của danh sách cuộc gọi gần đây và phần còn lại sẽ bị đẩy xuống;
- Khi bạn gọi cho ai đó, con trỏ của bạn sẽ được chuyển đến vị trí đầu tiên;
- Tên bạn bè không thể xuất hiện nhiều hơn một lần trong danh sách cuộc gọi gần đây;
- Bạn có thể điền vào danh sách các cuộc gọi gần đây của bạn với các mục giả (xem ví dụ);
- Số lượng bạn bè để gọi sẽ không nhiều hơn
N
.