Задача H. Расписание электричек

Автор:Г. Гренкин   Ограничение времени:1 сек
Входной файл:input.txt   Ограничение памяти:256 Мб
Выходной файл:output.txt  

Условие

В одном городе есть железная дорога, на которой N станций расположены в ряд. Крайние станции называются Центр и Пригород. По этой железной дороге ходит одна электричка в обоих направлениях. Утром электричка начинает своё движение из Центра и идёт в Пригород со всеми остановками. Затем она идёт обратно в Центр, тоже со всеми остановками. Цикл "Центр — Пригород — Центр" электричка совершает K раз и вечером возвращается в Центр.

Расписание электричек поменялось, и нужно срочно развесить новое расписание на всех станциях. Для этого требуется отправить хотя бы по одному сотруднику железной дороги на каждую станцию. Нужно определить минимальное количество сотрудников, которое необходимо, чтобы развесить новые расписания на всех станциях за один день.

Сотрудники перемещаются между станциями на электричках. Если сотрудник вышел на какой-то станции, чтобы повесить расписание, то он уже не успеет сесть на электричку, из которой он вышел. Исключение составляет станция Пригород: на ней электричка будет стоять достаточно долго, прежде чем поехать обратно в Центр, так что сотрудник успеет выйти из электрички, повесить расписание, а затем сесть на эту же электричку и поехать на ней обратно. На станции Центр вывешивать расписание не нужно. В начале рабочего дня все сотрудники находятся на станции Центр, и вечером они должны вернуться на станцию Центр.

Формат входного файла

Входной файл содержит целые числа N K.

Формат выходного файла

Требуется вывести в выходной файл единственное целое число — минимальное количество сотрудников.

Ограничения

2 ≤ N ≤ 100

1 ≤ K ≤ 25

Примеры тестов

Входной файл (input.txt) Выходной файл (output.txt)
1
4 1
3
2
5 2
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.

0.056s 0.008s 13