#P16134. [ICPC 2018 NAIPC] Recovery

[ICPC 2018 NAIPC] Recovery

题目描述

Consider an n×mn \times m matrix of ones and zeros. For example, this 4×44 \times 4:

$$\begin{aligned} 1\ 1\ 1\ 1 \\ 0\ 1\ 1\ 1 \\ 0\ 1\ 1\ 1 \\ 0\ 1\ 1\ 0 \end{aligned}$$

We can compute even parity for each row, and each column. In this case, the row parities are [0,1,1,0][0, 1, 1, 0] and the column parities are [1,0,0,1][1, 0, 0, 1] (the parity is 1 if there is an odd number of 1s in the row or column, 0 if the number of 1s is even). Note that the top row is row 1, the bottom row is row nn, the leftmost column is column 1, and the rightmost column is column mm.

Suppose we lost the original matrix, and only have the row and column parities. Can we recover the original matrix? Unfortunately, we cannot uniquely recover the original matrix, but with some constraints, we can uniquely recover a matrix that fits the bill. Firstly, the recovered matrix must contain as many 1’s as possible. Secondly, of all possible recovered matrices with the most 1’s, use the one which has the smallest binary value when you start with row 1, concatenate row 2 to the end of row 1, then append row 3, row 4, and so on.

输入格式

Each input will consist of a single test case. Note that your program may be run multiple times on different inputs. Each test case will consist of exactly two lines. The first line will contain a string RR (1R501 \leq |R| \leq 50), consisting only of the characters 0 and 1. These are the row parities, in order. The second line will contain a string CC (1C501 \leq |C| \leq 50), consisting only of the characters 0 and 1. These are the column parities, in order.

输出格式

If it is possible to recover the original matrix with the given constraints, then output the matrix as R|R| lines of exactly C|C| characters, consisting only of 0’s and 1’s. If it is not possible to recover the original matrix, output 1-1.

0110
1001
1111
0111
1110
1111
0
1
-1
11
0110
1011
1101