printРабочее место участника

printЗадачи

1254. Левый поворот

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

Начинающий автомобилист Фанк боится делать левые повороты. Он хочет найти найти компромисс между временем поездки и её опасностью. Фанк разделил карту города на клетки, каждая из которых содержит небольшой прямой участок дороги, перекресток или бездорожье. В клетку с дорогой, ведущей с севера на юг, можно попасть только из клеток, расположенных выше или ниже, и выехать только вниз или вверх без смены направления движения. Аналогично для клетки с дорогой, ведущей с запада на восток, но допустимыми будут только клетки слева и справа. В клетку с перекрестком можно попасть из любой соседней клетки (сверху, снизу, слева и справа) и можно выехать также в любую соседнюю клетку, если такое перемещение является допустимым для соседней клетки. В клетку без дороги перемещаться нельзя. Перемещение из клетки с дорогой или перекрестком без поворота в соседнюю клетку Фанк оценил в `A` баллов, перемещение из клетки с перекрестком в соседнюю клетку справа по направлению движения с соответствующим изменением направления движения – в `B` баллов, слева – в `C` баллов, а противоположную направлению движения – в `D` баллов.
Напишите программу, которая вычисляет минимальную сложность проезда из одной точки города в другую.
Первая строка ввода содержит шесть целых чисел - размеры города `N` и `M` (`2\ ≤\ N,\ M\ ≤\ 100`) и оценки сложности маневров для автомобилиста `A`, `B`, `C` и `D` (`1\ ≤\ A\ ≤\ B\ ≤\ C\ ≤\ D\ ≤\ 100`). Далее следует `N` строк, содержащих по `M` символов – карта города, разделенная на клетки. Символ '#' означает часть города без дорог, символ '+' – перекресток, символ '|' – дорогу с двухсторонним движением с севера на юг, '-' – дорогу с двухсторонним движением с запада на восток. Далее следует две строки, содержащих начальную и конечную позицию автомобиля и направление его движения в формате `r\ c\ d` (`1\ ≤\ r\ ≤\ N`, `1\ ≤\ c\ ≤\ M`, `d` – символ '<', '>', '^' или 'v', означающий направление движения влево, вправо, вверх или вниз соответственно). Начальная и конечная позиция автомобиля расположены на дороге или перекрестке. Верхний левый угол карты имеет координаты (1,1), правый нижний – координаты (`N,\ M`). Гарантируется, что существует по крайней мере один способ проезда из начального положения автомобиля в конечное.
Вывести одно целое число – минимальную сложность проезда.

Пример ввода

3 3 1 2 3 3
+-+
|#|
+-+
2 1 v
1 2 <

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

11
loading