Ограничение по времени: 0.5

секунды

Ограничение по памяти: 256

мегабайт


Родители Лизы подключили пакет, содержащий N телевизионных каналов, пронумерованных числами от 1 до N.

Переключать каналы можно с помощью двух кнопок на пульте: «+» и «–».

Короткое нажатие на кнопку «+» приведёт к переключению на следующий канал, если номер текущего канала меньше N; если же номер текущего канала равен N, то телевизор продолжит показывать этот канал. Если кнопку «+» нажать и удерживать некоторое время, произойдёт переход на K каналов вперёд при условии, что номер текущего канала не превосходит N−K. В противном случае произойдёт переход на канал N.

Аналогично, короткое нажатие на кнопку «−» приведёт к переключению на предыдущий канал, если номер текущего канала больше 1; если же номер текущего канала равен 1, телевизор продолжит показывать этот канал. Если кнопку «−» нажать и удерживать некоторое время, то произойдёт переход на K каналов назад при условии, что номер текущего канала превышает K. В противном случае произойдёт переход на канал 1. Лиза включила телевизор и обнаружила, что он показывает канал P. Лиза знает, что очень скоро по каналу с номером U начнётся интересная передача. Определите, какое минимальное количество нажатий на кнопки пульта потребуется сделать Лизе, чтобы переключиться на канал U .

Формат входных данных

В первой строке содержится целое число N

(3≤N≤109) — количество телевизионных каналов.

Во второй строке содержится целое число K

(2≤K
В третьей строке содержится целое число P

(1≤P≤N) — номер канала, который показывает телевизор.

В четвёртой строке содержится целое число U

(1≤U≤N)—номер канала, на который желает переключиться Лиза.

Гарантируется, что P≠U.


Формат выходных данных

Выведите одно целое неотрицательное число —

минимальное количество нажатий на кнопки пульта, которое необходимо для переключения с канала P на канал U .


Система оценки

Решения, правильно работающие при P
Решения, правильно работающие при N≤100, будут оцениваться в 48 баллов.


Замечание

В первом примере Лизе следует сначала выполнить одно короткое нажатие на кнопку «+» и переключиться с канала 3 на канал 4, а затем трижды осуществить переход вперёд на 5 каналов: сначала переключиться с 4 на 9, затем с 9 на 14 и, наконец, с 14на 19 канал.

Во втором примере Лиза может сначала переключиться коротким нажатием на кнопку «−» на канал 2, после чего выполнить три перехода вперёд на 5 каналов: с канала 2 на канал 7, затем на канал 12 и, наконец, на канал 17.

В третьем примере Лиза дважды выполнит короткое нажатие кнопки «−».

В четвёртом примере Лизе нужно сначала перейти назад, на канал 1, после чего трижды выполнить переход вперёд, последовательно на каналы 6, 11, 16.

ОТВЕТ ДАТЬ КОДОМ НА PYTHON!!!!!!!!!!!!!!!!!!!!!


asilvejstruk: Родители Лизы издеватели вообще

Ответы

Ответ дал: StStar
0

Ответ:

def paths(n, k, p, u):

   d = abs(p - u)

   t = divmod(d, k)

   j = (p - 2) % k + 1 if p > u < t[1] else (n - p) % k if p < u > n - k + t[1] else k

   return (sum(t), 1 + j + int.__sub__(*t)) + tuple(

           map(((p + k - 2) // k).__add__, paths(n, k, 1, u)) if u > p and 1 < p < k * k // 2

           else map(((n - p + k - 1) // k).__add__, paths(n, k, n, u)) if u < p and n > p > n - k * k // 2

           else ()

       )

n, k, p, u = map(int, map(input, ('',) * 4))

print(min(paths(n, k, p, u)))

Объяснение:

Вас заинтересует