#L3407. 「2020-2021 集训队作业」Island Manager

「2020-2021 集训队作业」Island Manager

题目描述

喝喝粥最近刚买下了 α\alpha 岛,他打算在这里建立一套管理体系。

α\alpha 岛的大致情况如下:

  • α\alpha 岛的形状是一个 nnmm 列的矩形。
  • α\alpha 岛的地势高低不平,具体地,如果将岛屿的行平均划分成 nn 份,列平均划分成 mm 份,那么,第 ii 行第 jj 列的那一块地的高度就是 hi,jh_{i,j}
  • 所有地块的高度都在 [1,n×m][1,n \times m] 之间,而且每一块地的高度互不相同。

为了很好地管理 α\alpha 岛,喝喝粥有了一个初步的想法:

当喝喝粥站在某一个位置时,他就可以管住这一行这一列的所有地。

接下来,喝喝粥将土地分成 44 块,如图所示:https://s1.ax1x.com/2020/10/29/BGltRs.png

这张图表示喝喝粥站在绿色区域,可以管住绿色、蓝色和黄色区域的所有位置。

但是喝喝粥管不住 ABCDA、B、C、D 四个区域。于是喝喝粥就决定将这些土地分封给他的小弟们,一个小弟只能得到一个区域。它的小弟也会以类似的方式把土地分给它的小弟的小弟……特别地,如果 ABCDA、B、C、D 区域中有区域退化为空区域,那么这个退化的区域就不再被分封。

喝喝粥和它的小弟们各有各的想法:

他可能会想站在最高处,这样他就可以做红太阳光芒普照;他可能会想站在最低处,这样他就可以隐藏自己成为錈王。喝喝粥的小弟的小弟等人也是如此。具体地,设喝喝粥为喝喝粥的 00 级小弟,喝喝粥的小弟为喝喝粥的 11 级小弟,喝喝粥的小弟的小弟为喝喝粥的 22 级小弟,喝喝粥的小弟的小弟的小弟为喝喝粥的 33 级小弟……给定一个长度为 min(n,m)\min(n,m) 的数列 aa。那么,假设一个人是喝喝粥的 kk 级小弟:

  • 如果 ak=0a_k=0,他会站在他分到的土地的最低点;
  • 否则,ak=1a_k=1,他会站在他分到的土地的最高点。

“我的大哥的大哥不是我的大哥”。参与管理这片土地的人只认自己的大哥。

喝喝粥想知道每一个参与管理 α\alpha 岛的人的大哥是谁。

请你输出一个 n×mn \times m 的矩阵:

  • 如果第 ii 行第 jj 列没有人站着或是喝喝粥站着,那么这个矩阵的第 ii 行第 jj 列的元素就是 00
  • 否则这个矩阵的第 ii 行第 jj 列的元素就是第 ii 行第 jj 列的人的大哥所占位置的高度。

输入格式

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

接下来一行有 min(n,m)\min(n,m) 个数,第 ii 个数代表 ai1a_{i-1}

接下来 nn 行,每行有 mm 个正整数,第 ii 行的第 jj 个数表示 hi,jh_{i,j}

输出格式

一个 n×mn \times m 的矩阵,表示的意义如题意所示。

样例 1

输入: 33 33 00 11 00 11 22 33 44 55 66 77 88 99

输出: 00 00 00 00 99 00 00 00 11

样例 2

输入: 1212 88 11 00 00 11 00 11 00 11 8787 1919 8888 44 2525 3838 11 6969 7474 8181 1515 2222 8989 6565 9494 2323 88 8585 7070 4040 2626 9292 7979 2424 6161 7676 7373 6363 3939 2828 8484 3535 1818 3737 5454 1313 6464 5252 4444 5151 66 2929 4242 8686 1111 3232 55 33 3636 3434 8282 99 5959 4343 6767 1212 3030 2727 9393 5656 4949 2020 1414 5050 5555 8080 8383 3333 77 3131 4141 9191 7575 22 4848 1010 1717 2121 4545 7878 5353 7171 5757 4646 6868 9696 7777 6666 7272 5858 1616 4747 6060 9595 9090 6262

输出: 00 00 00 22 00 00 9696 00 00 00 00 00 44 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 22 00 00 00 00 00 00 11 00 00 00 00 00 00 00 00 00 00 44 00 00 00 00 00 00 00 00 00 00 00 00 00 00 9696 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 9696 00 00 00 00 9696

数据范围与提示

  • 子任务 111010 分,1n×m100001 \leq n \times m \leq 10000
  • 子任务 221010 分,1n×m10000001 \leq n \times m \leq 1000000
  • 子任务 331010 分,数据随机生成,生成方式为:aia_i0011 中随机生成,hh 数组为一个随机排列。
  • 子任务 442020 分,保证 i,ai=0\forall i, a_i = 0
  • 子任务 553030 分,1n×m30000001 \leq n \times m \leq 3000000
  • 子任务 662020 分,没有特殊限制。

对于 100%100\% 的数据,1n×m40000001 \leq n \times m \leq 4000000

本题的输入和输出的量都比较大,建议使用较快的 IO 方式。