printЗанятие 2

printB. Треугольная задача

Ограничения: время – 1s/2s, память – 32MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

172.gif
Корпорация WarSoft, специализирующаяся на клонах популярных игр, приступила к разработке сетевой RTS–игры "Триада" для троих игроков, в которой у каждого игрока были бы совершенно равные шансы на выигрыш. Это возможно сделать, если вместо обычного квадратного поля использовать треугольное, разделенное на "клетки" – треугольники. Если все ресурсы и строения в стартовой позиции расставить симметрично, то выигрыш игрока будет зависеть только от его опыта и скорости реакции. Все "клетки" треугольного поля были пронумерованы последовательно, начиная с 1, сверху вниз и слева направо, как показано на рисунке.
Таким образом для указания позиции "юнита" (unit, единица войск) достаточно указать номер треугольника, в котором он находится. "Юниты" могут передвигаться в соседние треугольники только через общую сторону двух треугольников. Такое передвижение будем называть ходом.
Напишите программу, которая позволяет определить минимальное число ходов, которое потребуется “юниту”, чтобы перейти из треугольника с номером `N` в треугольник с номером `M`.
Ввод
Во входном файле в первой строке содержатся два натуральных числа `N` и `M` (`1≤N,\ M≤100000`) через один пробел.
Вывод
В выходной файл вывести минимальное число ходов.

Пример ввода

14 3

Пример вывода

5
loading