P10946 Pushing Boxes【征集数据】

题目描述

# 推送数据框 垃圾场里的报废汽车被一个装置压碎,该装置从侧面、前后、顶部和底部将汽车推入。结果是一块致密的金属。在这个问题中,你将模拟一个以类似方式工作的设备,但不会压碎任何东西,只会在二维空间中推动盒子。这些盒子都是正方形的,边长为单位,位于房间的地板上。房间的每一面墙都可以编程为向内移动一定量,推动它可能碰到的任何盒子。与汽车破碎机不同,这种设备很敏感,如果它感觉到箱子靠墙堆放,如果再按下去可能会压碎它们,它就会停止。例如,假设我们有一个 $12$ 乘 $16$ 的房间,如下图所示。框的左上角(这就是我们在这个问题中如何定位它们)位于坐标 $(1,13)$(下面的框A)、$(3,2)$、$(6,2)$、$(6,4)$、$(6,6)$、$(7,6)$ 和 $(8,9)$(框G)处,其中第一个坐标表示与顶壁的距离,第二个坐标表示距左壁的距离。 假设顶墙向下移动 $3$ 个单位(然后撤退,因为墙总是会后退),然后右墙向左移动 $4$ 个单位。第一次移动可以毫无问题地进行,但第二次移动如果不压碎一些箱子就无法进行。因此,右墙将只移动单位,即它可以移动的最大距离,直到箱子紧紧地装在它和左墙之间。然后,这些框将处于下图所示的配置中。这些框的位置是 $(3,1)$、$(3,2)$、$(6,0)$、$(6,1)$、$(6,2)$、$(7,2)$、$(8,2)$。

输入格式

此问题将有多个数据集。每个数据集的第一行将是两个整数,给出房间的高度和宽度。(我们将把房间想象成一张纸,如上所示。)每个维度不超过 $20$。下一行将包含一个整数 $n$$(0

输出格式

对于每个数据集,您需要生成一行表单输出: 数据集d在位置($r_1$,$c_1$)($r_2$,$c_2$)…($r_n$,$c_n$)处以方框结束。 其中($r_i$,$c_i$)是从上到下、从左到右给出的框的位置(用一个空格隔开),d是数据集编号(从 $1$ 开始)。 --- 翻译提供者:[csyc5586](https://www.luogu.com/user/668156)