luogu#P7975. 「Stoi2033」分裂

「Stoi2033」分裂

题目背景

趁时间没发觉 让我带着你离开
没有了证明 没有了空虚
基于两种立场我会罩着你
趁时间没发觉 让我带着你离开
这不是顽固 这不是逃避
没人绑着你走才快乐
——《分裂》

题目描述

有一个 n×m×2n \times m \times 2 的棋盒(四周为棋盒壁)与黑、红各 nmnm 颗棋。棋子有若干种类,红色的一种棋子个数和黑色的该种棋子个数相等。棋子种类用特征值 vi,jv_{i,j} 标记。特征值相同的棋子种类相同,特征值不同的棋子种类不同。红色棋子摆放在棋盒的下层,已经摆好。现在 Vinsta 要将黑棋按照规定顺序摆放在棋盒上层。设棋盒内坐标以左上角为 (1,1)(1,1),右下角为 (n,m)(n,m),依此第 ii 行第 jj 列为 (i,j)(i,j),则每颗摆进去的黑棋必须摆在满足以下要求的位置:

  1. 其摆放位置没有黑棋子且下方为与其种类相同的红棋;

  2. 在 1. 的要求下,若有多个,令一个位置的 紧密度 为其四边有黑棋子相邻或为棋盒壁的个数,则选择 紧密度 最大的一个;

  3. 在 2. 的要求下,若还有多个,则设此位置的坐标为 (i,j)(i,j),要求 i+ji+j 最小;

  4. 在 3. 的要求下,若还有多个,要求 ii 最小。

给出红棋的摆放情况和黑棋放入的顺序,她想请你帮忙求出每个位置的黑棋子被放入的顺序。

输入格式

第一行两个整数 n,mn,m

接下来 nnmm 列,第 ii 行第 jj 列表示 vi,jv_{i,j}

接下来一行 nmnm 个整数,表示按顺序每次放入的棋子的种类。

输出格式

输出 nnmm 列,每个位置上的数 ki,jk_{i,j} 表示 (i,j)(i,j) 上的棋是第 ki,jk_{i,j} 个被放进去的。

3 3
1 1 1
1 1 1
1 1 1
1 1 1 1 1 1 1 1 1

1 2 3
4 6 7
5 8 9

3 3
1 2 3
2 2 1
3 1 3
1 3 3 2 1 2 2 3 1

1 4 2
6 7 5
3 9 8

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

9 14 16 28 49 1 15 24 37 46
22 12 26 79 84 94 92 70 56 53
5 21 61 80 85 93 91 63 62 6
25 18 60 50 58 95 90 23 34 3
38 13 51 54 20 87 89 39 59 64
29 32 36 69 74 97 96 78 42 67
11 30 48 68 86 98 88 76 77 72
4 8 33 40 35 31 45 57 99 81
2 19 47 43 27 71 75 55 100 83
7 17 52 73 82 66 65 41 44 10

提示

对于 30%30\% 的数据,1n,m701 \le n,m \le 70

对于另外 30%30\% 的数据,vi,j=1v_{i,j}=1

对于 100%100\% 的数据,1n,m103,1vi,j101 \le n,m \le 10^3, 1 \le v_{i,j} \le 10,保证每种棋子黑色与红色数量相等。