#1122. 炸弹人的回忆

炸弹人的回忆

描述

大家还记得经典的炸弹人游戏吗?这是方块鸟鹦鹉班的项目分析课程里的其中一个项目,下图就是炸弹人游戏的截图:

image

炸弹人的地图里有三种不同的地块,分别是空地、砖墙和水泥墙,炸弹人和敌人都能在空地上移动,但无法穿过砖墙和水泥墙。

炸弹人只能在空地上通过放置定时炸弹来攻击敌人,炸弹会在三秒后爆炸,爆炸时会在炸弹相邻的上、下、左、右四个格子产生冲击波,冲击波能消灭敌人,也会对炸弹人造成致命伤害。而最重要的是,炸弹的冲击波能击碎砖墙,这样就能打开地图的更多区域了!

游戏中有一种道具,可以提升炸弹的等级,每提升一级,上、下、左、右四个方向的冲击波的长度都会增加一个格子,但无论怎么升级,冲击波都无法破水泥墙,但可以摧毁砖墙。不过,上、下、左、右某个方向的冲击波在破坏了一堵砖墙以后,就会耗尽所有能力,无法再向该方向传播了。

如,在下图中,炸弹等级为2

image

爆炸效果如下:

image

现在需要给出你当前的游戏地图,注明每个格子的类型( 空地、砖墙、水泥墙 )、炸弹等级和炸弹的位置,需要你在地图上画出炸弹爆炸后的冲击波的格子,并将应该摧毁的砖墙变成空地标注出来。

输入输出格式

输入

第一行为两个以空格分割的正整数rowrow, colcol,表示地图有几行几列; ( 0<row,col<1000 < row, col < 100 )

第二行为一个正整数lvllvl,表示当前炸弹的等级; ( 1lvl<1001 ≤ lvl < 100 )

随后rowrow行,每行为colcol个正整数tiletile,为该格子的类型,其中:

  • 0为空地
  • 1为砖墙
  • 2为水泥墙
  • 3为炸弹

输出

rowrow行,每行colcol个以空格分割的数字,表示炸弹爆炸后地图上每个格子的类型,其中:

  • 0为空地
  • 1为砖墙
  • 2为水泥墙
  • 3为炸弹
  • 4为冲击波

样例

5 5
2
0 0 0 0 0
0 0 1 0 0
0 2 3 0 1
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 2 4 4 0
0 0 4 0 0
0 0 4 0 0

样例1说明

  • 在炸弹原地生成冲击波
  • 往上的方向,冲击波被1行2列的砖墙挡下,该格砖墙被摧毁;
  • 往右的方向,冲击波覆盖了2行3列的空地,被2行4列的砖墙挡下,2行4列的砖墙被摧毁;
  • 往下的方向,冲击波覆盖了3行2列、4行2列的空地;
  • 往左的方向,冲击波被2行1列的水泥墙挡住;