Автор: | Г. Гренкин | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 256 Мб | |
Выходной файл: | output.txt |
В одном городе есть железная дорога, на которой N станций расположены в ряд. Крайние станции называются Центр и Пригород. По этой железной дороге ходит одна электричка в обоих направлениях. Утром электричка начинает своё движение из Центра и идёт в Пригород со всеми остановками. Затем она идёт обратно в Центр, тоже со всеми остановками. Цикл "Центр — Пригород — Центр" электричка совершает K раз и вечером возвращается в Центр.
Расписание электричек поменялось, и нужно срочно развесить новое расписание на всех станциях. Для этого требуется отправить хотя бы по одному сотруднику железной дороги на каждую станцию. Нужно определить минимальное количество сотрудников, которое необходимо, чтобы развесить новые расписания на всех станциях за один день.
Сотрудники перемещаются между станциями на электричках. Если сотрудник вышел на какой-то станции, чтобы повесить расписание, то он уже не успеет сесть на электричку, из которой он вышел. Исключение составляет станция Пригород: на ней электричка будет стоять достаточно долго, прежде чем поехать обратно в Центр, так что сотрудник успеет выйти из электрички, повесить расписание, а затем сесть на эту же электричку и поехать на ней обратно. На станции Центр вывешивать расписание не нужно. В начале рабочего дня все сотрудники находятся на станции Центр, и вечером они должны вернуться на станцию Центр.
Входной файл содержит целые числа N K.
Требуется вывести в выходной файл единственное целое число — минимальное количество сотрудников.
2 ≤ N ≤ 100
1 ≤ K ≤ 25
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
Заметим, что все сотрудники могут действовать независимо друг от друга. Поэтому нужно найти количество станций, которое может обслужить один сотрудник, и разделить N − 1 на это количество, а затем округлить результат вверх.
Одна электричка может дать сотруднику обслужить 2 станции, за исключением последней электрички, которая даёт обслужить 1 станцию. Таким образом, на 1 сотрудника приходится 2(K − 1) + 1 = 2K − 1 станций.
Итак, ответ в задаче: ceil((N − 1) / (2K − 1)), где ceil(x) означает округление вверх.
var n, k: integer; res: integer; function ceildiv(a, b: integer): integer; begin if (a mod b = 0) then Result := a div b else Result := a div b + 1; end; begin assign(input, 'input.txt'); reset(input); assign(output, 'output.txt'); rewrite(output); read(n, k); res := ceildiv(n-1, 2*k - 1); write(res); close(input); close(output); end.