CF1383D.Rearrange
省选/NOI-
通过率:0%
时间限制:1.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Koa the Koala has a matrix A of n rows and m columns. Elements of this matrix are distinct integers from 1 to n⋅m (each number from 1 to n⋅m appears exactly once in the matrix).
For any matrix M of n rows and m columns let's define the following:
- The i-th row of M is defined as Ri(M)=[Mi1,Mi2,…,Mim] for all i (1≤i≤n).
- The j-th column of M is defined as Cj(M)=[M1j,M2j,…,Mnj] for all j (1≤j≤m).
Koa defines S(A)=(X,Y) as the spectrum of A, where X is the set of the maximum values in rows of A and Y is the set of the maximum values in columns of A.
More formally:
- X=max(R1(A)),max(R2(A)),…,max(Rn(A))
- Y=max(C1(A)),max(C2(A)),…,max(Cm(A))
Koa asks you to find some matrix A′ of n rows and m columns, such that each number from 1 to n⋅m appears exactly once in the matrix, and the following conditions hold:
- S(A′)=S(A)
- Ri(A′) is bitonic for all i (1≤i≤n)
- Cj(A′) is bitonic for all j (1≤j≤m)
An array t (t1,t2,…,tk) is called bitonic if it first increases and then decreases.
More formally: t is bitonic if there exists some position p (1≤p≤k) such that: t1<t2<…<tp>tp+1>…>tk.
Help Koa to find such matrix or to determine that it doesn't exist.
考拉熊 Koa 有一个 n 行 m 列的矩阵 A。该矩阵的元素是 1 到 n⋅m 之间的互不相同的整数(即 1 到 n⋅m 中的每个整数在矩阵中恰好出现一次)。
对于任意一个 n 行 m 列的矩阵 M,我们定义如下:
- M 的第 i 行定义为 Ri(M)=[Mi1,Mi2,…,Mim],其中 i 满足 1≤i≤n;
- M 的第 j 列定义为 Cj(M)=[M1j,M2j,…,Mnj],其中 j 满足 1≤j≤m。
Koa 将 A 的谱(spectrum)定义为 S(A)=(X,Y),其中 X 是矩阵 A 各行最大值构成的集合,Y 是矩阵 A 各列最大值构成的集合。
更形式化地:
- X={max(R1(A)),max(R2(A)),…,max(Rn(A))}
- Y={max(C1(A)),max(C2(A)),…,max(Cm(A))}
Koa 请求你构造一个 n 行 m 列的矩阵 A′,使得 1 到 n⋅m 中的每个整数在 A′ 中恰好出现一次,并满足以下条件:
- S(A′)=S(A);
- 对所有 i(1≤i≤n),Ri(A′) 是双调数组(bitonic);
- 对所有 j(1≤j≤m),Cj(A′) 是双调数组(bitonic)。
一个数组 t=(t1,t2,…,tk) 被称为双调数组,如果它先严格递增、再严格递减。
更形式化地:t 是双调数组,当且仅当存在某个位置 p(1≤p≤k),使得
t1<t2<…<tp>tp+1>…>tk.
请帮助 Koa 找到满足上述条件的矩阵 A′,或判定这样的矩阵不存在。
输入格式
The first line of the input contains two integers n and m (1≤n,m≤250) — the number of rows and columns of A.
Each of the ollowing n lines contains m integers. The j-th integer in the i-th line denotes element Aij (1≤Aij≤n⋅m) of matrix A. It is guaranteed that every number from 1 to n⋅m appears exactly once among elements of the matrix.
输入的第一行包含两个整数 n 和 m(1≤n,m≤250)—— 分别表示矩阵 A 的行数和列数。
接下来的 n 行,每行包含 m 个整数。第 i 行中的第 j 个整数表示矩阵 A 的元素 Aij(1≤Aij≤n⋅m)。保证矩阵中恰好出现一次从 1 到 n⋅m 的每个整数。
输出格式
If such matrix doesn't exist, print −1 on a single line.
Otherwise, the output must consist of n lines, each one consisting of m space separated integers — a description of A′.
The j-th number in the i-th line represents the element Aij′.
Every integer from 1 to n⋅m should appear exactly once in A′, every row and column in A′ must be bitonic and S(A)=S(A′) must hold.
If there are many answers print any.
如果这样的矩阵不存在,则在单独一行中输出 −1。
否则,输出必须包含 n 行,每行包含 m 个以空格分隔的整数——即矩阵 A′ 的描述。
第 i 行中的第 j 个数表示元素 Aij′。
1 到 n⋅m 中的每个整数在 A′ 中必须恰好出现一次;A′ 的每一行和每一列都必须是双调的(bitonic),且需满足 S(A)=S(A′)。
若存在多个解,输出任意一个即可。
输入输出样例
输入#1
3 3 3 5 6 1 7 9 4 8 2
输出#1
9 5 1 7 8 2 3 6 4
输入#2
2 2 4 1 3 2
输出#2
4 1 3 2
输入#3
3 4 12 10 8 6 3 4 5 7 2 11 9 1
输出#3
12 8 6 1 10 11 9 2 3 4 5 7
说明/提示
Let's analyze the first sample:
For matrix A we have:
-
Rows:
- R1(A)=[3,5,6];max(R1(A))=6
- R2(A)=[1,7,9];max(R2(A))=9
- R3(A)=[4,8,2];max(R3(A))=8
-
Columns:
- C1(A)=[3,1,4];max(C1(A))=4
- C2(A)=[5,7,8];max(C2(A))=8
- C3(A)=[6,9,2];max(C3(A))=9
-
X=max(R1(A)),max(R2(A)),max(R3(A))=6,9,8
-
Y=max(C1(A)),max(C2(A)),max(C3(A))=4,8,9
-
So S(A)=(X,Y)=(6,9,8,4,8,9)
For matrix A′ we have:
-
Rows:
- R1(A′)=[9,5,1];max(R1(A′))=9
- R2(A′)=[7,8,2];max(R2(A′))=8
- R3(A′)=[3,6,4];max(R3(A′))=6
-
Columns:
- C1(A′)=[9,7,3];max(C1(A′))=9
- C2(A′)=[5,8,6];max(C2(A′))=8
- C3(A′)=[1,2,4];max(C3(A′))=4
-
Note that each of this arrays are bitonic.
-
X=max(R1(A′)),max(R2(A′)),max(R3(A′))=9,8,6
-
Y=max(C1(A′)),max(C2(A′)),max(C3(A′))=9,8,4
-
So S(A′)=(X,Y)=(9,8,6,9,8,4)
我们来分析第一个样例:
对于矩阵 A,有:
-
行:
- R1(A)=[3,5,6];max(R1(A))=6
- R2(A)=[1,7,9];max(R2(A))=9
- R3(A)=[4,8,2];max(R3(A))=8
-
列:
- C1(A)=[3,1,4];max(C1(A))=4
- C2(A)=[5,7,8];max(C2(A))=8
- C3(A)=[6,9,2];max(C3(A))=9
-
X=max(R1(A)),max(R2(A)),max(R3(A))=6,9,8
-
Y=max(C1(A)),max(C2(A)),max(C3(A))=4,8,9
-
因此 S(A)=(X,Y)=(6,9,8,4,8,9)
对于矩阵 A′,有:
-
行:
- R1(A′)=[9,5,1];max(R1(A′))=9
- R2(A′)=[7,8,2];max(R2(A′))=8
- R3(A′)=[3,6,4];max(R3(A′))=6
-
列:
- C1(A′)=[9,7,3];max(C1(A′))=9
- C2(A′)=[5,8,6];max(C2(A′))=8
- C3(A′)=[1,2,4];max(C3(A′))=4
-
注意:每个这样的数组都是双调的(bitonic)。
-
X=max(R1(A′)),max(R2(A′)),max(R3(A′))=9,8,6
-
Y=max(C1(A′)),max(C2(A′)),max(C3(A′))=9,8,4
-
因此 S(A′)=(X,Y)=(9,8,6,9,8,4)
输入解题思路,AI测评打分。不知道怎么写?