Олимпиадный тренинг

Задача . D. Переставьте


Коала Коа имеет матрицу \(A\) из \(n\) строк и \(m\) столбцов. Элементы этой матрицы — различные целые числа от \(1\) до \(n \cdot m\) (каждое число от \(1\) до \(n \cdot m\) встречается в матрице ровно один раз).

Для любой матрицы \(M\) из \(n\) строк и \(m\) столбцов определим следующее:

  • \(i\)-я строка \(M\) определяется как \(R_i(M) = [ M_{i1}, M_{i2}, \ldots, M_{im} ]\) для всех \(i\) (\(1 \le i \le n\)).
  • \(j\)-й столбец \(M\) определяется как \(C_j(M) = [ M_{1j}, M_{2j}, \ldots, M_{nj} ]\) для всех \(j\) (\(1 \le j \le m\)).

Коа определяет \(S(A) = (X, Y)\) как спектр \(A\), где \(X\)  — множество максимумов в строках \(A\), а \(Y\) — множество максимумов в столбцах \(A\) соответственно.

Более формально:

  • \(X = \{ \max(R_1(A)), \max(R_2(A)), \ldots, \max(R_n(A)) \}\)
  • \(Y = \{ \max(C_1(A)), \max(C_2(A)), \ldots, \max(C_m(A)) \}\)

Коа просит вас найти некоторую матрицу \(A'\) из \(n\) строк и \(m\) столбцов такую, чтобы каждое число от \(1\) до \(n \cdot m\) встречалось в матрице ровно один раз, и выполнялись следующие условия:

  • \(S(A') = S(A)\)
  • \(R_i(A')\) является битоническим для всех \(i\) (\(1 \le i \le n\))
  • \(C_j(A')\) является битоническим для всех \(j\) (\(1 \le j \le m\)).
Массив \(t\) (\(t_1, t_2, \ldots, t_k\)) называется битоническим, если он сначала возрастает, а затем спадает.

Более формально: \(t\) является битоническим, если существует некоторая позиция \(p\) (\(1 \le p \le k\)) такая, что: \(t_1 < t_2 < \ldots < t_p > t_{p+1} > \ldots > t_k\).

Помогите Коа найти такую матрицу, или определить, что ее не существует.

Входные данные

Первая строка содержит два целых числа \(n\) и \(m\) (\(1 \le n, m \le 250\))  — количества строк и столбцов в \(A\).

Каждая из следующих \(n\) строк содержит \(m\) целых чисел. \(j\)-е целое число в \(i\)-й строке обозначает элемент \(A_{ij}\) (\(1 \le A_{ij} \le n \cdot m\)) матрицы \(A\). Гарантируется, что каждое число от \(1\) до \(n \cdot m\) встречается ровно один раз среди элементов матрицы.

Выходные данные

Если такой матрицы не существует, в отдельной строке выведите \(-1\).

В противном случае вы должны вывести \(n\) строк, каждая из которых должная состоять из \(m\) целых чисел, разделенных пробелом  — описание \(A'\).

\(j\)-е число в \(i\)-й строке обозначает элемент \(A'_{ij}\).

Каждое число от \(1\) до \(n \cdot m\) должно встречаться в \(A'\) ровно один раз, каждая строка и столбец в \(A'\) должны быть битоническими и должно выполняться \(S(A) = S(A')\).

Если ответов несколько, выведите любой.

Примечание

Проанализируем первый пример:

Для матрицы \(A\):

    • Строки:
      • \(R_1(A) = [3, 5, 6]; \max(R_1(A)) = 6\)
      • \(R_2(A) = [1, 7, 9]; \max(R_2(A)) = 9\)
      • \(R_3(A) = [4, 8, 2]; \max(R_3(A)) = 8\)

    • Столбцы:
      • \(C_1(A) = [3, 1, 4]; \max(C_1(A)) = 4\)
      • \(C_2(A) = [5, 7, 8]; \max(C_2(A)) = 8\)
      • \(C_3(A) = [6, 9, 2]; \max(C_3(A)) = 9\)

  • \(X = \{ \max(R_1(A)), \max(R_2(A)), \max(R_3(A)) \} = \{ 6, 9, 8 \}\)
  • \(Y = \{ \max(C_1(A)), \max(C_2(A)), \max(C_3(A)) \} = \{ 4, 8, 9 \}\)
  • Поэтому \(S(A) = (X, Y) = (\{ 6, 9, 8 \}, \{ 4, 8, 9 \})\)

Для матрицы \(A'\):

    • Строки:
      • \(R_1(A') = [9, 5, 1]; \max(R_1(A')) = 9\)
      • \(R_2(A') = [7, 8, 2]; \max(R_2(A')) = 8\)
      • \(R_3(A') = [3, 6, 4]; \max(R_3(A')) = 6\)

    • Столбцы:
      • \(C_1(A') = [9, 7, 3]; \max(C_1(A')) = 9\)
      • \(C_2(A') = [5, 8, 6]; \max(C_2(A')) = 8\)
      • \(C_3(A') = [1, 2, 4]; \max(C_3(A')) = 4\)

  • Заметим, что каждый из этих массивов является битоническим.
  • \(X = \{ \max(R_1(A')), \max(R_2(A')), \max(R_3(A')) \} = \{ 9, 8, 6 \}\)
  • \(Y = \{ \max(C_1(A')), \max(C_2(A')), \max(C_3(A')) \} = \{ 9, 8, 4 \}\)
  • Поэтому \(S(A') = (X, Y) = (\{ 9, 8, 6 \}, \{ 9, 8, 4 \})\)

Примеры
Входные данныеВыходные данные
1 3 3
3 5 6
1 7 9
4 8 2
9 5 1
7 8 2
3 6 4
2 2 2
4 1
3 2
4 1
3 2
3 3 4
12 10 8 6
3 4 5 7
2 11 9 1
12 8 6 1
10 11 9 2
3 4 5 7

time 1000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя