eolymp
bolt
Попробуйте наш новый интерфейс для отправки задач
Задачи

Шестиугольные палочки

Шестиугольные палочки

Рассмотрим бесконечную шестиугольную сетку. Сетка состоит из одинаковых правильных шестиугольных ячеек, расположенных как указано ниже. На рисунке также представлена система координат, используемая для идентификации каждой ячейки. Каждая ячейка сетки может быть либо пустой, либо заблокированной. \includegraphics{https://static.e-olymp.com/content/fc/fc4392946d0b7e3f453b9bc09a28d87131ac92e3.jpg} Рисунок: Часть сетки Несколько палочек положили произвольным образом на сетку. Длина каждой палочки равна одной 'шестиугольной единице'. Это значит, что концы палочки расположены в центрах соседних ячеек. Вам следует передвинуть палочки таким образом, чтобы получить замкнутый правильный шестиугольник. На рисунках ниже приведены примеры замкнутых шестиугольников, сделанных из палочек. Вам заданы начальные координаты палочек, размещенных на сетке. Также будут заданы координаты заблокированных ячеек. За каждый ход можно совершить одну из следующих операций: \begin{itemize} \item Выберите одну палочку и выкиньте ее \item Выберите одну палочку и поверните ее на \textbf{60} градусов по/против часовой стрелки вокруг одного из ее концов \item Выберите одну палочку и протолкните ее на длину палочки. \end{itemize} Палочки никогда не должны занимать заблокированные ячейки. Однако две палочки могут занимать одну и ту же ячейку одновременно. \includegraphics{https://static.e-olymp.com/content/f3/f370d56009d79fcc415baed0b0456497a61e60e3.jpg} Рассмотрим состояние сетки выше. Препятствие находится в ячейке с координатами (\textbf{1}, \textbf{1}), а концы палочек в ячейках (\textbf{0}, \textbf{0}) - (\textbf{1}, \textbf{0}). Четыре возможные операции над палочкой представлены ниже По завершению всех операций на сетке должен образоваться замкнутый правильный шестиугольник без вокруг лежащих палочек. Это значит, что на сетке находится в точности \textbf{6*x} палочек, где \textbf{x} - натуральное число. Можете ли Вы совершить это за \textit{наименьшее }количество операций? \InputFile Первая строка содержит количество тестов\textbf{ T} (\textbf{T} < \textbf{50}). Каждый тест начинается с количества имеющихся палочек \textbf{S} (\textbf{S} < \textbf{9}). Следующие \textbf{S} строк описывают координаты палочек в формате \textbf{x_1 y_1 x_2 y_2}, что означает палочку от \textbf{(x_1, y_1)} до \textbf{(x_2, y_2)}. Координаты корректны, а длина каждой палочки равна шестиугольной единице, как указано выше. В следующей строке задается количество препятствий \textbf{B} ( \textbf{B} < \textbf{20}). Каждая из следующих \textbf{B} строк задает координаты препятствия. Координаты имеют формат \textbf{x_1 y_1}. Гарантируется, что препятствия не пересекаются ни с какой из палочек. Все координаты (палочек и препятствий) лежат в промежутке \textbf{\[-4, 4\]}. Замечание: Помните, что мы имеем дело с бесконечной сеткой. Поэтому в ответе координаты палочек могут лежать вне промежутка \textbf{\[-4, 4\]}. \OutputFile Для каждого теста вывести его номер, за которым следует наименьшее количество требуемых операций. Если сформировать шестиугольник из палочек невозможно, то вывести "\textbf{impossible}". Придерживайтесь приведенного формата входных и выходных данных.
Лимит времени 1 секунда
Лимит использования памяти 256 MiB
Входные данные #1
3
6
-1 -1 -1 0
-1 0 0 1
0 1 1 1
1 1 1 0
1 0 0 -1
0 -1 -1 -1
0
5
-1 0 0 1
0 1 1 1
1 1 1 0
1 0 0 -1
0 -1 -1 -1
0
7
-2 -2 -2 -1
-1 -1 -1 0
0 0 1 1
0 0 1 1
0 0 1 1
1 1 2 2
1 2 2 2
2
1 0
2 0
Выходные данные #1
Case 1: 0
Case 2: impossible
Case 3: 9