#P9456. [入门赛 #14] Three-View Projection (Hard Version)

[入门赛 #14] Three-View Projection (Hard Version)

题目描述

全文与 x,y,zx, y, z 轴/方向有关的内容均基于以下的 x,y,zx, y, z 轴、位置及观测方向。观测者站在如图所示的位置,正在向着 yy 轴(绿线)正方向(箭头方向)观测。

现在有一个长、宽、高(沿 x,y,zx, y, z 轴延展的长度)为 n cm,m cm,k cmn \text{ cm}, m \text{ cm}, k \text{ cm} 的长方体区域。我们将这片区域划分为 n×m×kn \times m \times k 个小格子。每个小格子中可以放置一个边长为 1 cm1 \text{ cm} 的小正方体。

我们使用一个整数三元组 (x,y,z)(x, y, z) 来表示一个格子在空间中的位置,其代表从左往右数第 xx 个,从前往后数第 yy 个,从下往上第 zz 个格子。

例如,上图展示的 3×3×33 \times 3 \times 3 区域中,按照观测者的位置,可以发现红蓝线(x,zx, z 轴)所在的面为前面,蓝绿线(y,zy, z 轴)所在的面为左面,红绿线(x,yx, y 轴)所在的面为下面,五个小正方体的位置分别为 $(1, 1, 1), (1, 1, 2), (2, 3, 2), (3, 3, 2), (2, 2, 3)$。

三视图是观测者从上面(从上往下)、左面(从左往右)、正面(从前往后)三个不同角度观察同一个空间几何体而画出的图形。

例如,以上是示例区域的三视图。

现在,给定一个区域及其中的正方体排布情况,请你帮助计算出这个区域的三视图。

输入格式

输入共 n×k+1n \times k + 1 行。

第一行为三个整数 n,m,kn, m, k,代表长方形区域的长、宽、高。
接下来 n×kn \times k 行,每行 mm 个整数。其中,将其每 nn 行分为一组,第 xx 组第 yy 行(即第 (x1)×n+y(x - 1) \times n + y 行)第 zz 列的整数 ax,y,za _ {x, y, z} 代表 (y,z,x)(y, z, x) 处格子的情况,若 ax,y,z=1a _ {x, y, z} = 1,代表该格子有小正方体;否则,代表该格子没有小正方体。

输出格式

输出共 2k+m2k + m 行。

kk 行,每行 nn 个整数,代表自上而下自左至右正视图的情况。如果正视图中某个位置有填充,则输出 11,否则输出 00。同一行整数之间两两以一个空格隔开。
接下来 kk 行,每行 mm 个整数,代表自上而下自后至前左视图的情况。如果左视图中某个位置有填充,则输出 11,否则输出 00。同一行整数之间两两以一个空格隔开。
接下来 mm 行,每行 nn 个整数,代表自后至前自左至右俯视图的情况。如果俯视图中某个位置有填充,则输出 11,否则输出 00。同一行整数之间两两以一个空格隔开。

以上方向均基于观测者初始站立位置及方向。如果对输出的顺序有疑惑,请参照样例辅助理解。

3 3 3
1 0 0
0 0 0
0 0 0
1 0 0
0 0 1
0 0 1
0 0 0
0 1 0
0 0 0
0 1 0
1 1 1
1 0 0
0 1 0
1 0 1
0 0 1
0 1 1
0 1 0
1 0 0
4 6 3
0 0 0 0 0 1
0 0 0 0 0 1
0 0 1 0 0 0
0 0 0 0 0 0
0 1 0 0 0 0
0 0 1 0 0 1
0 0 0 0 0 0
1 0 0 0 0 1
0 0 0 0 0 0
0 1 0 0 1 0
0 0 0 0 0 1
1 0 0 0 0 1
0 1 1 1
1 1 0 1
1 1 1 0
1 1 0 0 1 1
1 0 0 1 1 1
1 0 0 1 0 0
1 1 1 1
0 1 0 0
0 0 0 0
0 1 1 0
1 1 0 0
0 0 0 1

提示

样例 1 解释

样例 1 即为题目中的示例。

数据规模与约定

对于 100%100\% 的数据,保证 1n,m,k2001 \leq n, m, k \leq 2000ax,y,z10 \leq a _ {x, y, z} \leq 1

补充说明

出题人在山东大学交叉研究中心开设的可视计算暑期学校中大脑过载,因此撰写了这样的一道题目。
欢迎加入山东大学交叉研究中心。

Added by Fijisaki:欢迎报考华中科技大学计算机科学与技术学院。