Робот-доставщик
시간 제한2초메모리 제한1024 MB
점 (0,0)과 (1,0)을 중심으로 한 90도 회전만으로 한 점에서 다른 점으로 이동할 수 있는지 판정하고, 길이 10^6 이하의 명령열을 출력하거나 -1을 출력한다.
문제
Сэм устал доставлять заказы самостоятельно, поэтому он решил построить робота, который будет помогать ему в доставке. Для работы робота-доставщика нужны две радиовышки. Область, в которой роботу предстоит доставлять заказы, представляет собой плоскость. Введём на ней координатные оси: ось направлена слева направо, а ось направлена снизу вверх. Точку с координатами и обозначим как . Сэм расположил первую радиовышку в точке , а вторую радиовышку в точке .
Так как Сэм не очень хорош в строительстве роботов, робот-доставщик умеет выполнять всего четыре команды.
- Поехать из текущей точки к первой радиовышке, доехать до неё, повернуть на градусов налево, и проехать в новом направлении расстояние, равное расстоянию от до первой радиовышки. После выполнения этой команды, робот окажется в точке , которая равна точке , повернутой на градусов по часовой стрелке относительно точки .
- Поехать из текущей точки к первой радиовышке, доехать до неё, повернуть на градусов направо, и проехать в новом направлении расстояние, равное расстоянию от до первой радиовышки. После выполнения этой команды, робот окажется в точке , которая равна точке , повернутой на градусов против часовой стрелки относительно точки .
- Поехать из текущей точки ко второй радиовышке, доехать до неё, повернуть на градусов налево, и проехать в новом направлении расстояние, равное расстоянию от до второй радиовышки. После выполнения этой команды, робот окажется в точке , которая равна точке , повернутой на градусов по часовой стрелке относительно точки .
- Поехать из текущей точки ко второй радиовышке, доехать до неё, повернуть на градусов направо, и проехать в новом направлении расстояние, равное расстоянию от до второй радиовышки. После выполнения этой команды, робот окажется в точке , которая равна точке , повернутой на градусов против часовой стрелки относительно точки .
Сейчас робот находится в точке , и Сэм хочет отправить его в точку . Он подозревает, что это не всегда возможно, а иногда может быть слишком долго. Помогите Сэму построить последовательность команд для робота, длинной не более , после выполнения которых, робот переместится из точки в точку . Либо сообщите, что искомой последовательности команд длиной не более не существует.
입력
В первой строке даны два числа и () --- координаты исходной позиции робота. В следующей строке даны два числа и () --- координаты точки, в которой робот должен оказаться после выполнения команд. Гарантируется, что исходная точка не совпадает с точкой назначения.
출력
Если не существует искомой последовательность команд длиной не более , выведите <<-1>>. Иначе, в первой строке выведите положительное число --- количество команд в вашей последовательности (). А в следующей строке выведите строку , состоящую из цифр , , и --- номера команд в порядке их выполнения.
Обратите внимание, что вам не требуется минимизировать длину последовательности команд. Если ответов несколько, вы можете вывести любой.
힌트
В первом примере, после первой операции робот покажется в точке , а после второй в точке .
В втором примере робот не может достичь точки назначения.