Олимпиадный тренинг

Задача . B. Уроки дизайна задач: учимся у жизни


Задача

Темы: *1300

Один из способов придумывания задач — наблюдать за процессами в реальной жизни. Можно выбрать какую-то реально существующую ситуацию из жизни, формализовать ее и так получить новую задачу.

Представим жизненную ситуацию: стоит много людей, все ждут лифта. Каждый человек хочет попасть на какой-то конкретный этаж. Мы можем формализовать это следующим образом. Пусть n людей стоит на первом этаже, и i-й человек хочет попасть на fi-й этаж. К сожалению, в здании только один лифт, способный вместить k человек (иными словами, одновременно лифт могут использовать не более k человек). Изначально лифт расположен на первом этаже. Лифту требуется |a - b| секунд для того, чтобы доехать от a-го до b-го этажа (время, необходимое пассажирам лифта на вход и выход, не учитывается).

Какое минимальное количество секунд необходимо для того, чтобы развезти всех людей по необходимым этажам и затем вернуть лифт на первый этаж?

Входные данные

В первой строке записано два целых числа n и k (1 ≤ n, k ≤ 2000) — количество людей и максимальная вместимость лифта.

В следующей строке записано n целых чисел: f1, f2, ..., fn (2 ≤ fi ≤ 2000), где fi обозначает этаж, до которого хочет доехать i-й человек.

Выходные данные

Выведите единственное целое число — минимальное время, необходимое для достижения поставленной цели.

Примечание

В первом примере оптимальное решение выглядит так:

  1. Заходят люди номер 1 и 2.
  2. Лифт едет на второй этаж.
  3. Оба человека выходят из лифта.
  4. Лифт возвращается на первый этаж.
  5. Затем лифт забирает человека номер 3.
  6. Лифт едет на второй этаж.
  7. Лифт забирает человека номер 2.
  8. Лифт едет на третий этаж.
  9. Второй человек выходит.
  10. Лифт едет на четвертый этаж и там выходит третий человек.
  11. Лифт возвращается на первый этаж.

Примеры
Входные данныеВыходные данные
1 3 2
2 3 4
8
2 4 2
50 100 50 100
296
3 10 3
2 2 2 2 2 2 2 2 2 2
8

time 1000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя