Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Ваш друг написал программу, которая m раз запрашивает какие-то элементы из массива (назовем его a). Так как доступ к этому массиву очень медленный, он попросил вас реализовать кэш при помощи массива b с гораздо более быстрым доступом.
- Кэш работает следующим образом: если запрашиваемый элемент уже хранится в кэше, то возвращается значение из кэша (т. е. случилось попадание в кэш). В противном случае значение сначала загружается в кэш, а затем загруженное значение возвращается запросившему (т.е. случился кэш-промах).
- Так как кэш ограничен в размерах, то в какой-то момент в нем будет недостаточно места для нового элемента. В таком случае придется загрузить новый элемент вместо некоторого загруженного ранее. Изначально кэш пустой.
- Так как вам известны все запросы к массиву a, которые сделает программа вашего друга, то вашей основной задачей является посчитать минимальное количество кэш-промахов, которое может случится для этих запросов.
- Входные данные
- В первой строке входного файла заданы числа n, k и m (1≤n,k,m≤105) — размер массива a, размер массива b (то есть размер кэша) и количество обращений к массиву a соответственно.
- Вторая строка входного файла содержит m целых чисел pi (1≤pi≤n) — индексы запрашиваемых элементов в массиве a в порядке запросов.
- Выходные данные
- Выведите единственное число — минимальное количество кэш-промахов, которое может случиться для данных обращений к массиву.
- Примеры
- входные данные
- 2 1 3
- 1 1 2
- выходные данные
- 2
- входные данные
- 2 1 3
- 1 2 1
- выходные данные
- 3
- входные данные
- 2 2 3
- 1 2 1
- выходные данные
- 2
- входные данные
- 6 3 8
- 1 2 1 1 4 5 1 6
- выходные данные
- 5
- входные данные
- 3 2 6
- 1 2 3 1 2 3
- выходные данные
- 4
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement