#P14526. [2026年省队模拟联测]楼房重建
[2026年省队模拟联测]楼房重建
题目背景
小 C 在玩 MC。
题目描述
小 C 建造了一栋用 种方块构建的房子,其中一个方块点组 表示在点 上有一个类型为 的方块,保证每种方块至少出现一次。
由于小 C 喜欢连通块,所以小 C 的房子满足:对于每种方块,所有这种方块都是六连通的。换句话说,对于每一对类型均为 的方块,可以只经过类型为 并且两两有公共面的方块,从一个走到另一个。
由于宇宙射线的影响,小 C 的楼房只剩下一块地基了,小 C 的地基是一个 的矩形,坐标在 到 之间,其余的方块都被摧毁了,你要帮小 Z 还原她的楼房。
由于小 C 没有开创造,所以小 C 的楼房总共不超过 个方块。
数据保证有解。
输入格式
第一行三个正整数 ,表示地基大小和方块种类数。
第二行至第 行,每行 个正整数 ,第 行第 个表示地基的方块点组 。
输出格式
第一行输出一个正整数 ,你需要保证 。
接下来 行,每行四个正整数 ,表示你添加的一个方块点组 。
你需要保证,没有两个方块在相同的位置(包括原有的地基),且 ,。
若有多解,输出任意一个均可。
样例 1 输入
2 2 2
1 2
2 1
样例 1 输出
8
1 2 1 1
1 2 2 1
2 2 2 1
1 1 3 2
2 1 3 2
3 1 3 2
3 1 2 2
3 1 1 2
样例 1 解释
这是地基:
其中绿色玻璃为方块 ,蓝色玻璃为方块 。
这是添加方块后的房子:
样例 2 输入
3 3 3
1 1 1
3 2 1
3 3 3
样例 2 输出
0
数据范围
本题使用子任务(Subtask)计分。你需要通过一个子任务内所有测试数据才可以获得相应的得分。
对于所有测试数据,保证:
- ;
- 。
| 子任务编号 | 分值 | ||
|---|---|---|---|
| ^ | |||
| ^ | |||
| ^ |
提示
下发文件中含有 ,它可以帮助你进行一些调试。
使用 g++ checker.cpp -o checker -O2 -std=c++14 将文件编译后,使用命令
./checker in.txt out.txt ans.txt (Linux)
checker.exe in.txt out.txt ans.txt (Windows)
即可使用。