ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила

[Онлайн] ICPC Ural Regional Contest Qualifier 2026

Описание     Задачи     Отправить на проверку     Состояние проверки     Результаты
Соревнование завершено

H. Пазлы для любителя

Ограничение времени: 2.0 секунды
Ограничение памяти: 256 МБ
Ямочка большая любительница головоломок, и поэтому недавно купила себе новый пазл. Собранный пазл представляет собой прямоугольную таблицу из K строк и L столбцов, из K · L квадратиков одинакового размера, называемых кусочками пазла. Каждая сторона кусочка пазла может быть углублением определенного типа, либо штырьком определенного типа, либо гладкой, если эта сторона является границей пазла. Если два кусочка в собранном пазле соседние по стороне, то у одного кусочка на этой стороне должен быть штырёк, а у другого углубление, причем одинакового типа.
К сожалению, Ямочка оказалась не очень опытной в сборке пазлов, поэтому купила набор для новичков: в данном наборе типы всех штырьков различны, типы всех углублений тоже. Более формально: каждому типу соединения соответствует ровно один штырёк и одно углубление, либо не соответствует ничего.
Вскрыв коробку с пазлом и немного потыкав кусочки друг с другом, Ямочка поняла, что головоломки это не её, поэтому задача собрать данный пазл ложится целиком и полностью на вас.

Исходные данные

В первой строке дано целое число N (1 ≤ N ≤ 105) — количество кусочков пазла.
В следующих N строках дается по 4 целых числа li, ui, ri, di (−106 ≤ li, ui, ri, di ≤ 106) — описание соответственно левой, верхней, правой и нижней стороны i-го кусочка пазла. Пусть t — одно из этих чисел, тогда:
  • если t > 0, то на этой стороне расположен штырёк типа |t|;
  • если t < 0, то на этой стороне расположено углубление типа |t|;
  • если t = 0, то эта сторона гладкая и обязана находиться на внешней границе пазла.
Конечно же, любой кусочек можно вращать по часовой стрелке на любой градус, кратный 90∘.

Результат

В первой строке выведите два числа K, L (1 ≤ K, L ≤ N; K × L = N).
В следующих K строчках выведите по L целых чисел — номера кусочков в порядке ввода, которые должны стоять на этом месте в собранном пазле.
Каждая деталь должна встретиться в ответе ровно один раз. Повороты деталей в выходных данных указывать не требуется. Ответ считается корректным, если существует набор поворотов, при котором все соседние стороны совместимы, а гладкие стороны находятся на границе.
Гарантируется, что ответ всегда есть. Если подходящих ответов несколько, выведите любой из них.

Пример

исходные данныерезультат
6
0 0 -1 4
1 0 5 3
-5 0 0 -6
7 6 0 0
2 -3 -7 0
0 -4 -2 0
2 3
1 2 3
6 5 4
Автор задачи: Яков Малин
Источник задачи: Квалификационный тур Уральского регионального чемпионата ICPC 2026