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