Автор: | Pavel Baderik | Ограничение времени: | 2 сек | |
Входной файл: | input.txt | Ограничение памяти: | 256 Мб | |
Выходной файл: | output.txt | |||
Максимальный балл: | 100 |
Вася — таксист с большой душой. Он обожает водить машину, чувствовать город под колесами, но глубоко внутри он настоящий программист. Поэтому всем своим пассажирам он говорит, что является успешным программистом, а таксует так, для души.
Но именно сегодня навигатор у Вани сломался и теперь ему нужно быстро написать программу, которая найдёт кратчайший путь из точки A в точку B, дабы не опозориться перед пассажиром. Помогите ему в этом деле.
Город является прямоугольником с высотой H и шириной W, где каждая клетка — это перекрёсток. Всё было бы хорошо, но Вася знает, что сейчас в городе из-за аварий, ремонтов, пришельцев закрыты N перекрёстков с номерами a1, a2, ..., aN. Нумерует перекрёстки он по принципу: a = i * w + j, когда перекрёсток на ходится на пересечении i улицы и j улицы.
Так же Вася напомнил, что существует правило проезда перекрёстка, которое гласит, что необходимо уступать всем машинам, что оказались справа. Поэтому если Вася подъезжает на перекрёсток, то дальше он может сразу (за 1 времени) повернуть направо, пропустить машину и проехать прямо (2 единицы времени), пропустить машину и справа встречную, а затем повернуть налево (3 единицы времени), пропустить машины со всех направлений и развернуться (4 единицы).
В первой строке подаются два целых числа: 1 ≤ H, W ≤ 3 * 103, разделённые пробелом.
Во второй строке идут три целых числа: 1 ≤ A, B ≤ H * W, 0 ≤ N ≤ min(H, W) / 2.
В третей строке идут N целых чисел: 1 ≤ ai ≤ H * W.
Выведите одно целое число — кратчайшее расстояние из точки A в точку B. Если добраться невозможно, то выведите -1.
Вася может выбрать исходное направление движения своего такси.
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|