配点 : 600 点
問題文
整数 N 及び長さ N の配列
S, T, U, V が与えられます。
以下の条件を満たすような N×N の行列 a をどれか 1 つ構築してください。
- ai,j は整数である。
- 0≤ai,j<264
- Si=0 のとき i 行目の要素のビットごとの論理積は Ui である。
- Si=1 のとき i 行目の要素のビットごとの論理和は Ui である。
- Ti=0 のとき i 列目の要素のビットごとの論理積は Vi である。
- Ti=1 のとき i 列目の要素のビットごとの論理和は Vi である。
ただし、条件を満たす行列が存在しない場合もあるかもしれません。
制約
- 入力は全て整数
- 1≤N≤500
- 0≤Si≤1
- 0≤Ti≤1
- 0≤Ui<264
- 0≤Vi<264
入力
入力は以下の形式で標準入力から与えられる。
N
S1 S2 ... SN
T1 T2 ... TN
U1 U2 ... UN
V1 V2 ... VN
出力
条件を満たす行列が存在する場合は、そのような行列 1 つを以下の形式で出力せよ。
a1,1 ... a1,N
:
aN,1 ... aN,N
条件を満たす行列なら何を出力してもいいことに注意せよ。
条件を満たす行列が存在しない場合は −1 を出力せよ。
2
0 1
1 0
1 1
1 0
1 1
1 0
入力例 1 では
- 1 行目の要素のビットごとの論理積が 1
- 2 行目の要素のビットごとの論理和が 1
- 1 列目の要素のビットごとの論理和が 1
- 2 列目の要素のビットごとの論理積が 0
の条件を満たす行列を見つける必要があります。
2
1 1
1 0
15 15
15 11
15 11
15 11