#6766. 扫雷

扫雷

题目描述

在扫雷游戏中,棋盘有 nnmm 列,一共有 kk 个炸弹。每个格子最多包含一个炸弹。

马尔科已经知道所有炸弹的位置。现在,他需要把每一个不含炸弹的格子填上一个数字,这个数字表示该格子周围八个相邻格子中炸弹的数量。如果一个格子中有炸弹,则用字符 B 表示。

请你输出按照马尔科规则生成的扫雷棋盘。

约定和数据范围

对于所有测试点,保证 1n,m5001 \leq n, m \leq 5001kn×m1 \leq k \leq n \times m。 每个格子至多包含一个炸弹。

测试点 分值 特殊限制
1 30 n=1n = 1,棋盘只有一行
2 k=1k = 1,只有一个炸弹
3 40 无额外限制

格式

输入格式

第一行输入三个整数 n,m,kn, m, k,分别表示棋盘的行数、列数和炸弹数量。

接下来 kk 行,每行输入两个整数 ri,sir_i, s_i,表示一个炸弹所在的位置为第 rir_i 行第 sis_i 列。 保证每个格子至多包含一个炸弹。

输出格式

输出 nn 行,每行包含 mm 个字符,表示生成后的扫雷棋盘。

其中:

  • 如果某个格子中有炸弹,则输出 B
  • 否则,输出该格子周围八个相邻格子中炸弹的数量。

每行的 mm 个字符之间不需要空格。

样例

1 6 1
1 3
01B100
3 3 3
1 1
2 3
1 3
B3B
13B
011

样例解释

样例1解释:

棋盘只有一行,共 6 列。

炸弹位于第 1 行第 3 列。因此第 3 列输出 B

第 2 列和第 4 列与炸弹相邻,所以输出 1,其他格子周围没有炸弹,所以输出 0。

样例2解释:

棋盘中有三个炸弹,分别位于:(1,1),(2,3),(1,3)(1, 1), (2, 3), (1, 3)

对于每个没有炸弹的格子,统计它周围八个方向上相邻格子中的炸弹数量即可。

例如,第 1 行第 2 列周围有 3 个炸弹,因此输出 3。