SP3865 RELJEF - Reljef
题目描述
两组穴居人陷入土地纠纷,决定用老办法解决,互相扔棍子。这场战斗是在一个山洞里组织的,山洞的高度足以让天花板不受影响,但地面上的矿藏阻碍了棍子的飞行。
洞穴可分为r行和c列,整个洞穴由r×c细胞组成。洞穴中的每个细胞要么是空的,要么含有一大块矿物。如果两块矿物在四个主要方向(上、下、左、右)中的一个方向相邻,则它们是同一簇矿物的一部分。
一组洞穴人在洞穴的左侧,另一组在右侧。两组轮流向另一组投掷棍子;首先一组选择棍子飞行的高度,然后(必要时相互攀爬)投掷棍子,棍子在选定的高度水平穿过洞穴。
如果棍子在路上碰到一块矿物,它就会破坏这块矿物,细胞变空,棍子就会停止它的旅程。
当一个块被销毁时,集群可能会崩溃。如果一个新创建的星团会漂浮在空中,那么它会因为重力而坠落。落下时,簇不会改变形状,即簇中的所有块都落在一起。一旦坠落星团中的某个星团落在另一个星团或地面的某个星团上,整个星团就会停止坠落。就我们而言,如果一个集群落在另一个集群上,它们就会合并成为一个集群。
你的程序将给出洞穴中矿物的布局和投掷棍棒的高度。交换木棒后,确定矿物的布局。
输入格式
第一行包含两个整数r和c(1≤r,c≤100),即洞穴的尺寸。
下面的每一行r都将包含c字符。字符“.”表示空单元格,而字母“x”表示矿物块。
下一行包含一个整数n(1≤n≤100),即抛出的棍子数。
最后一行包含n个整数,用空格隔开,空格是指投掷棍子的高度。所有高度都在1到R之间(包括1和R),高度1是矩阵的底部,高度R是顶部。第一个勾号从左到右,第二个从右到左,依此类推。
一开始不会有集群漂浮在空中。此外,输入数据将使两个或多个集群在任何时候都不会同时下降,从而不会出现不明确的情况。
输出格式
输出应该由r行组成,每行包含c个字符,洞的最终布局与输入的格式相同。