Лифт
Чтобы поднять на N-й этаж M-этажного дома новый холодильник, Витя вызвал бригаду грузчиков. Оплата работы грузчиков производится так: за подъем холодильника на один этаж требуется заплатить 200 рублей, за спуск на один этаж — 100 рублей. За подъем и спуск на лифте плата не взимается. Несмотря на то, что в Витином доме есть лифт, ему возможно все же придется заплатить грузчикам, поскольку лифт останавливается только на каждом K-м этаже, начиная с первого (то есть на этажах с номерами 1, K+1, 2K+1, 3K+1, …). Требуется вычислить, какой минимальной суммы денег достаточно, чтобы грузчики доставили холодильник с первого этажа на N-й.

Формат входных данных
Во входном файле записаны три числа: M (2≤M≤100), N (2≤NM) и K (2≤KM–1), разделенные пробелами.
Формат выходных данных

В выходной файл выведите одно число — минимальную стоимость подъема холодильника.

В задаче надо найти два этажа, ближайших (снизу и сверху) к данному, N-му этажу, на котором останавливается лифт, и выбрать, на какой из них везти груз выгоднее. Для нахождения ближайшего нижнего этажа найдем целое A, такое что искомый этаж будет иметь номер (A*K + 1). Для этого надо разделить нацело (N-1) на K. И стоимостью подъема на нужный этаж N будет разность между этажами, помноженная на 200 (стоимость подъема на 1 этаж): 200*(N - (A*K+1)). Далее, ближайший сверху этаж, на котором останавливается лифт, будет иметь номер (A+1)*K + 1. Единственная проблема возникает, если он не существует, то есть (A+1)*K + 1 > M (в этом случае ответ уже получен). Если же этот этаж существует, то стоимость спуска будет равна 100 * ((A+1)*K + 1 - N). Выбрав минимум из двух стоимостей, получим искомый ответ.

Текст программы (Паскаль):
var
m, n, k:longint;
a, res:longint;
begin
assign(input, 'a.in');
reset(input);
read(m, n, k);
close(input);
a:=(n-1) div k;
res:=200*(n-(a*k+1));
if ((a+1)*k+1<=m) and (res>100*((a+1)*k+1-n)) then
res:=100*((a+1)*k+1-n);
assign(output, 'a.out');
rewrite(output);
writeln(res);
close(output);
end.
This site was made on Tilda — a website builder that helps to create a website without any code
Create a website