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

Обеспечение очистки

Обеспечение очистки

Помните большой бой, в котором Халк и Мерзость бросали друг другу через здания Манхэттена? Или момент, когда Зеленый Гоблин разбил Человеком - пауком полдюжины кирпичных стен? Эти стены должны были разлететься на миллионы кусков!!! Это здорово, что у нас есть супергерои, способные наказать злодеев, но не задумывались ли Вы, кто занимается восстановлением причиненного ущерба? Вы - президент корпорации по очистке, и Ваша задача как раз в этом и состоит! После большого боя Вам следует собрать все куски стен и сложить их в том порядке, в котором они были до начала боя. \includegraphics{https://static.e-olymp.com/content/2a/2a7c993cbc55939e654c6bbfcc5e9e9a624450f4.jpg} Рисунок 1: Стена разбита на много кусков Стена представляет собой прямоугольный участок, разлетающийся на треугольные куски когда в него бросают злодея (см. Рисунок 1). Совершив сложный визуальный анализ, Вы убедились, из какой первоначальной структуры был получен каждый маленький кусочек. По сути, у вас есть план, который выглядит как на картинке выше. Кроме того, Вы заметили, что если два обломка находятся рядом, то они идут по всей длине разрыва (ребра), разделяющего их, как показано на Рисунке 2a. Рисунок 2: Хороший, плохой и ужасный. У Вас имеется робот - сборщик, который на месте помогает восстановить стену. Робот может только опускать кусок, за один раз только один, сверху вниз. Робот не может передвигать кусок с одного места на другой или вращать его. Необходимо быть осторожным в составлении порядка команд, в котором робот будет собирать сломанные куски, чтобы случайно не заблокировать место, в которое следует опустить соответствующий кусок (см. Рисунок 2d). Можете ли Вы указать порядок сборки кусков, чтобы полностью восстановить стену? \InputFile Число в первой строке указывает на количество стен, которое Вам следует восстановить. Первое число для каждой стены \textbf{n} (\textbf{2 }≤ \textbf{n} ≤ \textbf{1000000}) указывает на количество треугольных кусков, на которое она разбита. Далее следуют \textbf{n }строк, каждая из которых содержит шесть целых чисел \textbf{x_1 y_1 x_2 y_2 x_3 y_3} - декартовы координаты \textbf{(x, y)} трех вершин треугольника, являющегося куском стены. Первая строка описывает кусок \textbf{1}, следующая кусок \textbf{2}, и так далее. Три точки всегда задаются в порядке против часовой стрелки и всегда задают треугольник ненулевой площади. Все координаты варьируются от \textbf{0} до \textbf{10^9} включительно, где положительное направление оси \textbf{y} указывает на направление "вверх". \textbf{n} заданных кусков всегда и полностью покрывают прямоугольную область, без зазоров и перекрытий. \OutputFile Для каждой стены вывести одну строку номеров кусков в том порядке, в котором их будет собирать робот для восстановления стены. Если существует несколько таких последовательностей, то вывести любую из них.
Лимит времени 30 секунд
Лимит использования памяти 256 MiB
Входные данные #1
2
4
3 4 7 1 7 6
7 6 1 6 3 4
1 6 1 1 3 4
7 1 3 4 1 1
14
0 0 3 0 2 3
2 3 3 0 12 0
2 3 12 0 4 5
4 5 12 0 5 6
5 6 12 0 12 4
5 6 12 4 12 8
5 6 12 8 4 7
4 7 12 8 0 8
4 7 0 8 2 5
4 7 2 5 5 6
5 6 2 5 4 5
4 5 2 5 2 3
2 3 2 5 0 0
0 0 2 5 0 8
Выходные данные #1
4 1 3 2
1 2 13 14 3 4 12 11 5 6 10 9 7 8
Источник ACM ICPC 2011 Pacific Northwest Region Programming Contest