loj#P6852. 「ICPC World Finals 2021」晶体侧风
「ICPC World Finals 2021」晶体侧风
Description
You are part of a scientific team developing a new technique to image crystal structures at the molecular level. The technique involves blowing a very fine wind over the surface of the crystal at various angles to detect boundaries (indicated by molecules that are exposed to the wind). This is repeated with different wind directions and the boundaries observed for each direction are recorded. Your team has already collected the data, but – as is often the case with applied science – now the real work, analysis, must begin.
For a given crystal, you will receive the directions in which wind blew over the surface, and the locations of all boundaries encountered by each of these winds. For a wind blowing in direction , a boundary is defined as a location such that a molecule exists at and no molecule exists at . Note that for technical reasons and are not necessarily relatively prime.
The data might not uniquely determine the structure of the crystal. You must find the two unique structures with the minimal and maximal number of molecules consistent with the observations.
For example, in the first sample input, nine different molecules are directly encountered by the given winds. There must be a molecule at location because otherwise would be a boundary for the third wind. For similar reasons, there must be molecules at and . There cannot be any further molecules as they would result in additional observations for some of the winds.
Input
The first line of input contains three integers , , and , where and () are the maximum dimensions of the crystal structure, and () is the number of times wind was blown over the crystal.
Each of the remaining lines specifies the data for one wind. These lines each start with two integers and ( and , but not both zero) denoting the direction of the wind. Then comes an integer () giving the number of boundaries encountered by this wind. The line finishes with b distinct pairs of integers ( and ) listing each observed boundary.
You may assume the input is consistent with at least one crystal and that no molecules exist outside the specified dimensions.
Output
Output two textual representations of the crystal structure separated by an empty line. Each structure has rows of characters, with the top-left corner corresponding to location . The first is the structure with the minimal number of molecules consistent with the observations, the second is the maximal one. Use #
for a location where a molecule exists and .
for a location where no molecule exists.
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
#..#.
.#..#
.#...
..###
##.##
.##.#
.###.
..###