你手里有一个n行m列的空间,为'.'的点是空的区域,为'X'的区域有一个障碍。
你将在第一行派出k个士兵,第i个士兵的起点为x_i列,且会尽可能地向第n行进发,规则如下:
- 如果当前位置的下一行是空格,则向下移动一格
- 如果当前位置的下一行是障碍或者已经到了第n行,则停止。
- 如果下一行是已停止的士兵,则当前位置的左侧和左下位置都为空时,会向左移动一列;如果右侧和右下位置都为空时,会向右移动一列;如果都不为满足,则停止不动。
每个士兵将会在前一个士兵停止不动后再出发,停止后要将所在位置修改存为'O'。
第一行两个整数n,m。
接下来n行,每行m个字符表示初始的地图,每个字符可能为'.'或'X'。
接下来一个整数k表示士兵的数量。
接下来k行,第i行一个整数x_i表示第i个士兵从第一行第x_i列依次出发。
你需要输出一个n行,每行m个字符表示所有士兵停止移动后的地图。
5 4 .... .... X... .... .... 4 1 1 1 1
.... O... X... .... OOO.
7 6 ...... ...... ...XX. ...... ...... .XX... ...... 6 1 4 4 6 4 4
...... ...O.. ...XX. ...... .OO... .XX... O..O.O
样例解释 #1
四位士兵都从第一行第一列出发。第一个士兵将被障碍挡住,停在第二行第一列。第二个士兵将会先向右下移动,然后一直向下移动。第三个士兵先向下移动,遇到第一个士兵后向右移动,遇到第二个士兵后向左移动。第四个士兵先向下移动,遇到第一个士兵后向右移动,遇到第二个士兵后将会向右移动。
数据范围与约定
- 对于 60\% 的数据,保证n\leq 30。
- 对于 100\% 的数据,保证1\leq n \leq 3*10^4,1\leq m \leq 30,1\leq q \leq 10^5,保证不会"堵塞"。
时间限制 | 1 秒 |
内存限制 | 128 MB |