A3800 「OOI 2016 Day 1」表格压缩

暂无评定 传统题 国际知名赛事 上传者
时间限制4000ms
内存限制256MiB
通过 / 提交0/0

A3800「OOI 2016 Day 1」表格压缩

暂无评定 传统题 国际知名赛事 上传者
时间限制4000ms
内存限制256MiB
通过 / 提交0/0

题目描述

题目译自 Open Olympiad in Informatics 2016 Day1 T4 「Сжатие таблицы / Table Compression」。

彼得对数据压缩算法产生了浓厚的兴趣。他已经学习了 gz\textit{gz}、bz\textit{bz}、zip\textit{zip} 等多种格式。受到新知识的启发,彼得决定开发自己的压缩格式,并将其命名为 dis\textit{dis}。

彼得决定压缩表格。他有一个包含 nn 行 mm 列的表格,表格中填充了正整数。他希望将表格中元素的值替换为新的正整数,使得每行和每列中元素的相对关系保持不变。也就是说,如果在某一行中原始表格的 ai,j<ai,ka_{i,j} < a_{i,k},则压缩后的表格中 ai,j′<ai,k′a'_{i,j} < a'_{i,k};如果 ai,j=ai,ka_{i,j} = a_{i,k},则 ai,j′=ai,k′a'_{i,j} = a'_{i,k}。同样地,如果在某一列中原始表格的 ai,j<ap,ja_{i,j} < a_{p,j},则压缩后的表格中 ai,j′<ap,j′a'_{i,j} < a'_{p,j};如果 ai,j=ap,ja_{i,j} = a_{p,j},则 ai,j′=ap,j′a'_{i,j} = a'_{p,j}。

由于较大的数值需要更多的存储空间,因此压缩后表格中元素的最大值应尽可能小。

彼得在理论上是个专家,但他并不喜欢写代码。请帮助他实现 dis\textit{dis} 压缩格式。

输入格式

第一行包含两个整数 nn 和 mm(1≤n,m1 \leq n, m 且 n⋅m≤1000000n \cdot m \leq 1000000),分别表示表格的行数和列数。

接下来的 nn 行,每行包含 mm 个整数 ai,ja_{i,j} (1≤ai,j≤109)(1 \leq a_{i,j} \leq 10^{9}),表示表格中元素的值。

输出格式

输出压缩后的表格:包含 nn 行,每行有 mm 个数字。

如果存在多个答案使得最大值最小,可以输出其中任意一个。

2 2
1 2
3 4

1 2
2 3

在第一个样例中,a1,2≠a2,1a_{1,2} \neq a_{2,1},但由于它们不在同一行或同一列中,压缩时可以将它们设置为相等。

4 3
20 10 30
50 40 30
50 60 70
90 80 70

2 1 3
5 4 3
5 6 7
9 8 7

数据范围与提示

详细子任务附加限制及分值如下表所示。其中子任务 00 是样例。

子任务 测试点编号 分值 附加限制 子任务依赖 备注
11 3∼193 \sim 19 1010 n≤1000n \leq 1000,m=1m = 1
22 20∼3920 \sim 39 1515 n,m≤100n, m \leq 100,所有 ai,ja_{i,j} 不同
33 40∼7440 \sim 74 1515 n,m≤100n, m \leq 100 0,20, 2
44 75∼8475 \sim 84 1515 n,m≤400n, m \leq 400,所有 ai,ja_{i,j} 不同 22
55 85∼10285 \sim 102 1515 n,m≤400n, m \leq 400 0,2,3,40, 2, 3, 4
66 103∼112103 \sim 112 1515 所有 ai,ja_{i,j} 不同 2,42, 4
77 -- 1515 0∼60 \sim 6