eolymp
bolt
Try our new interface for solving problems
Məsələlər

Хексзмеи в хексболоте

Хексзмеи в хексболоте

Хексболото - это странный тип болота, вымощенного правильными шестиугольными ямочками. Хексзмеи ползают в нем, являясь адаптированными к окружающей среде. Они представляют собой цепочку правильных шестиугольников, каждый из которых строго полностью помещается в одну шестиугольную ямочку. Хексзмеи передвигают свои секции с ямок в которых они находятся, на соседние. Чтобы не сломать свое тело, части хексзмей, которые были соседними до совершения движения, остаются соседними и после. Когда двигается одна из секций, то прилегающие к ней секции способствуют движению и поэтому не могут двигаться в одно и то же время. Любое число секций, никакие две из которых не являются соседними, могут передвигаться одновременно. Можно заметить, что хексзмея может передвигать свои секции, находящиеся на концах, в одну из двух ямок, а промежуточные секции только в одну, если такая существует. Например, в случае отсутствия препятствий, хексзмеи могут ползти вперед, извивая свое тело, как показано на \textit{\textbf{Рисунке 1}}, слева направо. На рисунке змея в каждый момент времени передвигает четыре свои части тела из восьми, и передвигает все свое тело вперед на длину одной ямки после четырех шагов движения. На самом деле, они намного лучше ползают боком, как вьющиеся растения. \includegraphics{https://static.e-olymp.com/content/50/5021aa33766454a74d69d4a9fe100ccbd209c76d.jpg} \textit{\textbf{Рисунок1}}: Ползание вперед Их кожа настолько липкая, что если две секции которые изначально не были соседними, попадут в соседние ямки (\textit{\textbf{Рисунок 2}}), то они склеятся вместе и змея умрет. Две секции не могут уместиться в одной ямке. Это конечно же сковывает передвижение змеи. Иногда им приходится приложить некоторые усилия, чтобы достать кусок еды, даже если он находится в ямке рядом с головой. \includegraphics{https://static.e-olymp.com/content/ee/ee154c095b6dc3e2326be5465cc091dea32ad54f.jpg} \textit{\textbf{Рисунок 2}}: Смертельный случай И там и тут на хексболоте находятся скалы. Каждая скала умещается в точности в одну ямку. Кожа хексзмей не прилипает к скалам, однако змеи не могут заползать на них. И хотя ямки со скалами ограничивают передвижение змей, они в свою очередь хорошо знают географию местности и могут планировать свое передвижение по кратчайшему маршруту. Вас назначили руководителем группы ученых, которая занимается проведением научных исследований змей на этом болоте. Вам следует завершить начатое исследование, но не в ущерб любой аварии. Ваша задача - оценить как скоро хексзмея, питающаяся людьми, переместит свою голову (первую секцию) в позицию болота, где находится ученый. Секции тела змеи кроме головы безвредны, и ученый, одетый в хай-тек антиприлипающий костюм, может находиться с любой из секцией тела в одной ямке. \InputFile Входные данные состоят из нескольких тестов, последняя строка содержит один ноль. Количество тестов не превосходит \textbf{10}. Каждый тест имеет следующий формат. \textbf{количество секций у змеи (=n)} \textbf{x1 y1} \textbf{x2 y2} \textbf{...} \textbf{xn yn} \textbf{количество скал на болоте (=k)} \textbf{u1 v1} \textbf{u2 v2} \textbf{...} \textbf{uk vk} \textbf{X Y} Первая строка каждого теста содержит число \textbf{n} - количество секций у змеи, оно равно \textbf{2} или более, но никогда не превосходит \textbf{8}. Каждая из следующих \textbf{n} строк содержит \textbf{x} и \textbf{y} координаты секции змеи. Строки описывают начальное положение секций в порядке от головы до хвоста. Следующая строка задает количество скал \textbf{k} в болоте, это число не отрицательное и не превышает \textbf{100}. Каждая из следующих \textbf{k} строк содержит два целых числа \textbf{u} и \textbf{v} - положение скалы. Последняя строка содержит два целых числа \textbf{X} и \textbf{Y} - позиция, куда необходимо приползти змее. Голова змеи изначально не находится здесь. Все значения координат \textbf{x}, \textbf{y}, \textbf{u}, \textbf{v}, \textbf{X} и \textbf{Y} лежат в интервале от \textbf{-999999} до \textbf{999999} включительно. Два числа в строке разделены одним пробелом. Во входных данных не встречаются другие символы, кроме как десятичные цифры, знак минус и пробелы, их разделяющие. Система координат, кодирующая позиции, показана на \textit{\textbf{Рисунке 3}}. \includegraphics{https://static.e-olymp.com/content/18/18768539d454ef07ce4981a03ee5642bdbba5b25.jpg} \textit{\textbf{Рисунок 3}}: Система координат \OutputFile Для каждого теста вывести строку, содержащую целое число - наименьшее количество шагов, необходимое змее передвинуть свою голову в заданную позицию. Выходные строки не должны содержать никаких других символов. Считайте, что хексзмеи могут найти решение не более чем за \textbf{20} шагов.
Zaman məhdudiyyəti 1 saniyə
Yaddaşı istafadə məhdudiyyəti 64 MiB
Giriş verilənləri #1
3
2 -2
2 -1
1 0
1
0 2
0 0
4
2 -2
2 -1
2 0
3 0
2
1 -1
0 2
0 0
8
-6 0
-5 0
-4 0
-3 0
-2 0
-1 0
0 0
1 0
1
-1 1
0 0
6
2 -3
3 -3
3 -2
3 -1
3 0
2 1
3
1 -1
1 0
1 1
0 0
3
-8000 4996
-8000 4997
-8000 4998
2
-7999 4999
-8001 5000
-8000 5000
8
10 -8
9 -7
9 -6
9 -5
9 -4
9 -3
9 -2
9 -1
0
0 0
0
Çıxış verilənləri #1
3
9
18
18
19
20