Time Limit: 2 sec / Memory Limit: 1024 MB
配点 : 600 点
問題文
整数 N 及び長さ N の配列 S, T, U, V が与えられます。 以下の条件を満たすような N×N の行列 a をどれか 1 つ構築してください。
- a_{i,j} は整数である。
- 0 \leq a_{i,j} \lt 2^{64}
- S_{i} = 0 のとき i 行目の要素のビットごとの論理積は U_{i} である。
- S_{i} = 1 のとき i 行目の要素のビットごとの論理和は U_{i} である。
- T_{i} = 0 のとき i 列目の要素のビットごとの論理積は V_{i} である。
- T_{i} = 1 のとき i 列目の要素のビットごとの論理和は V_{i} である。
ただし、条件を満たす行列が存在しない場合もあるかもしれません。
制約
- 入力は全て整数
- 1 \leq N \leq 500
- 0 \leq S_{i} \leq 1
- 0 \leq T_{i} \leq 1
- 0 \leq U_{i} \lt 2^{64}
- 0 \leq V_{i} \lt 2^{64}
入力
入力は以下の形式で標準入力から与えられる。
N S_{1} S_{2} ... S_{N} T_{1} T_{2} ... T_{N} U_{1} U_{2} ... U_{N} V_{1} V_{2} ... V_{N}
出力
条件を満たす行列が存在する場合は、そのような行列 1 つを以下の形式で出力せよ。
a_{1,1} ... a_{1,N} : a_{N,1} ... a_{N,N}
条件を満たす行列なら何を出力してもいいことに注意せよ。
条件を満たす行列が存在しない場合は -1 を出力せよ。
入力例 1
2 0 1 1 0 1 1 1 0
出力例 1
1 1 1 0
入力例 1 では
- 1 行目の要素のビットごとの論理積が 1
- 2 行目の要素のビットごとの論理和が 1
- 1 列目の要素のビットごとの論理和が 1
- 2 列目の要素のビットごとの論理積が 0
の条件を満たす行列を見つける必要があります。
入力例 2
2 1 1 1 0 15 15 15 11
出力例 2
15 11 15 11
Score : 600 points
Problem Statement
Given are an integer N and arrays S, T, U, and V, each of length N. Construct an N×N matrix a that satisfy the following conditions:
- a_{i,j} is an integer.
- 0 \leq a_{i,j} \lt 2^{64}.
- If S_{i} = 0, the bitwise AND of the elements in the i-th row is U_{i}.
- If S_{i} = 1, the bitwise OR of the elements in the i-th row is U_{i}.
- If T_{i} = 0, the bitwise AND of the elements in the i-th column is V_{i}.
- If T_{i} = 1, the bitwise OR of the elements in the i-th column is V_{i}.
However, there may be cases where no matrix satisfies the conditions.
Constraints
- All values in input are integers.
- 1 \leq N \leq 500
- 0 \leq S_{i} \leq 1
- 0 \leq T_{i} \leq 1
- 0 \leq U_{i} \lt 2^{64}
- 0 \leq V_{i} \lt 2^{64}
Input
Input is given from Standard Input in the following format:
N S_{1} S_{2} ... S_{N} T_{1} T_{2} ... T_{N} U_{1} U_{2} ... U_{N} V_{1} V_{2} ... V_{N}
Output
If there exists a matrix that satisfies the conditions, print one such matrix in the following format:
a_{1,1} ... a_{1,N} : a_{N,1} ... a_{N,N}
Note that any matrix satisfying the conditions is accepted.
If no matrix satisfies the conditions, print -1.
Sample Input 1
2 0 1 1 0 1 1 1 0
Sample Output 1
1 1 1 0
In Sample Input 1, we need to find a matrix such that:
- the bitwise AND of the elements in the 1-st row is 1;
- the bitwise OR of the elements in the 2-nd row is 1;
- the bitwise OR of the elements in the 1-st column is 1;
- the bitwise AND of the elements in the 2-nd column is 0.
Sample Input 2
2 1 1 1 0 15 15 15 11
Sample Output 2
15 11 15 11