给定一个 n \times m 的整数矩阵 a。
矩阵的边界元素均为 0,即满足 i=1、i=n、j=1 或 j=m 的位置均为 0;所有非边界元素均不为 0。
对于每个非边界位置 (i,j),求它周围 8 个位置的数字之和。这里“周围”是指与 (i,j) 共享一条边或一个顶点的位置,即:
\sum_{x=i-1}^{i+1}\sum_{y=j-1}^{j+1}a_{x,y}-a_{i,j}.
请按照原矩阵中的行列顺序输出所有非边界位置的答案。
本题要求使用一维数组存储矩阵,不得使用 std::vector 等动态序列容器。
输入
第一行包含两个整数 n,m,表示矩阵的行数和列数。
接下来 n 行,每行包含 m 个整数,其中第 i 行的第 j 个整数为 a_{i,j}。
输入保证:
输出
依次输出 i=2,3,\ldots,n-1 对应的各行。每行依次输出 j=2,3,\ldots,m-1 对应的邻域和,相邻整数之间用一个空格分隔。
如果 n<3 或 m<3,矩阵中没有非边界位置,此时输出为空。
样例
| 标准输入 复制文本 |
4 4 0 0 0 0 0 1 2 0 0 9 8 0 0 0 0 0 |
| 标准输出 复制文本 |
19 18 11 12 |
提示
位置 (2,2) 周围的非零数字为 2,9,8,它们的和为 19。其余位置按相同方式计算。
本题采用 IOI 赛制。每个子任务中的所有测试点全部通过后,才能获得该子任务的分数。
| 子任务 | 分值 | 附加限制 |
|---|---|---|
| 1 | 5 | \min(n,m)\le 2 |
| 2 | 5 | \min(n,m)=3 |
| 3 | 10 | n,m\ge 4,所有非边界元素相等,且 abs(a_{i,j})\le 10^8 |
| 4 | 10 | n,m\le 50,且 abs(a_{i,j})\le 10^4 |
| 5 | 10 | abs(a_{i,j})\le 10^8 |
| 6 | 10 | 无附加限制 |