#P9439. [ICPC 2021 WF] Crystal Crosswind
[ICPC 2021 WF] Crystal Crosswind
Description
你是一个科学团队中的一员,正在开发一种在分子级别上成像晶体结构的新技术。这种技术涉及在晶体表面吹送一股非常微弱的风,并以不同的角度吹送,以便检测边界(通过暴露给风的分子来表示)。这个过程会重复进行,每个吹送方向的边界都会被记录下来。你的团队已经收集到了数据,但是如同大多数应用科学一样,现在真正的工作,即分析工作必须开始。
对于给定的晶体,你将接收到风以不同方向吹送过晶体表面的数据,以及每个风吹过时遇到的所有边界的位置。对于在方向()吹送的风,边界被定义为位置(),使得一个分子位于(),并且没有分子位于()。请注意,出于技术原因, 和 不一定互质。
这些数据可能无法唯一确定晶体的结构。你必须找到两个与观测数据一致且分子数最少和最多的晶体结构。
例如,在第一个示例输入中,通过给定的风,出现了9个不同的分子。必须有一个在位置()处的分子,否则()将成为第三股风的边界。出于类似的原因,必须在位置()和()处有分子。不能再有其他分子,因为它们会导致一些风的附加观测结果。
Input Format
输入的第一行包含三个整数 、 和 ,其中 和 ()是晶体结构的最大尺寸,()是风吹过晶体的次数。
接下来的 行中,每一行都描述了一次吹风的数据。第一对整数 和 (,,但不能同时为零)表示风的方向。然后是一个整数 (),表示这股风遇到的边界数量。接下来的 对不同的整数 、(,)表示每个观测到的边界。
你可以假设输入数据与至少一个晶体是一致的,并且没有分子存在于指定尺寸范围之外。
Output Format
输出两个晶体结构的文本表示,两个结构之间用一个空行分隔。每个结构有 行,每行有 个字符,左上角对应位置()。第一个结构是与观测结果一致的包含最少分子数量的结构,第二个结构是包含最多分子数量的结构。使用 '#' 表示分子存在的位置,使用 '.' 表示分子不存在的位置。
6 6 3
1 1 3 3 1 1 3 2 2
0 2 6 3 1 1 3 2 2 6 4 5 3 4 2
1 -1 4 1 3 2 4 3 5 4 6
..#...
.#.#..
#.#.#.
.#.#.#
..#.#.
...#..
..#...
.#.#..
#.#.#.
.#.#.#
..#.#.
...#..
5 4 2
1 0 6 1 1 4 1 2 2 5 2 2 3 3 4
0 -1 7 1 1 4 1 5 2 2 3 3 4 4 4 5 4
#..#.
.#..#
.#...
..###
##.##
.##.#
.###.
..###
京公网安备 11011102002149号