atcoder#ABC164F. [ABC164F] I hate Matrix Construction

[ABC164F] I hate Matrix Construction

题目描述

整数 N N 及び長さ N N の配列 S S , T T , U U , V V が与えられます。 以下の条件を満たすような N×N N×N の行列 a a をどれか 1 1 つ構築してください。

  • ai,j a_{i,j} は整数である。
  • 0  ai,j < 264 0\ \leq\ a_{i,j}\ \lt\ 2^{64}
  • Si = 0 S_{i}\ =\ 0 のとき i i 行目の要素のビットごとの論理積は Ui U_{i} である。
  • Si = 1 S_{i}\ =\ 1 のとき i i 行目の要素のビットごとの論理和は Ui U_{i} である。
  • Ti = 0 T_{i}\ =\ 0 のとき i i 列目の要素のビットごとの論理積は Vi V_{i} である。
  • Ti = 1 T_{i}\ =\ 1 のとき i i 列目の要素のビットごとの論理和は Vi V_{i} である。

ただし、条件を満たす行列が存在しない場合もあるかもしれません。

输入格式

入力は以下の形式で標準入力から与えられる。

N N S1 S_{1} S2 S_{2} ... ... SN S_{N} T1 T_{1} T2 T_{2} ... ... TN T_{N} U1 U_{1} U2 U_{2} ... ... UN U_{N} V1 V_{1} V2 V_{2} ... ... VN V_{N}

输出格式

条件を満たす行列が存在する場合は、そのような行列 1 1 つを以下の形式で出力せよ。

a1,1 a_{1,1} ... ... a1,N a_{1,N} : : aN,1 a_{N,1} ... ... aN,N a_{N,N}

条件を満たす行列なら何を出力してもいいことに注意せよ。

条件を満たす行列が存在しない場合は 1 -1 を出力せよ。

题目大意

给定一个整数 NN 和4个长度为 NN 的序列,S,T,U,V。要求构造一个 N×NN×N 的矩阵,满足:

  • ai,ja_{i,j} 是整数。
  • 0ai,j<264.0\le a_{i,j}<2^{64}.
  • 如果 Si=0S_i = 0,第 ii 行所有数按位与的值为 UiU_i
  • 如果 Si=1S_i = 1,第 ii 行所有数按位或的值为 UiU_i
  • 如果 Ti=0T_i = 0,第 ii 列所有数按位与的值为 ViV_i
  • 如果 Ti=1T_i = 1,第 ii 列所有数按位或的值为 ViV_i

如果有解,输出答案矩阵,否则输出1-1

2
0 1
1 0
1 1
1 0
1 1
1 0
2
1 1
1 0
15 15
15 11
15 11
15 11

提示

制約

  • 入力は全て整数
  • 1  N  500 1\ \leq\ N\ \leq\ 500
  • 0  Si  1 0\ \leq\ S_{i}\ \leq\ 1
  • 0  Ti  1 0\ \leq\ T_{i}\ \leq\ 1
  • 0  Ui < 264 0\ \leq\ U_{i}\ \lt\ 2^{64}
  • 0  Vi < 264 0\ \leq\ V_{i}\ \lt\ 2^{64}

Sample Explanation 1

入力例 1 1 では - 1 1 行目の要素のビットごとの論理積が 1 1 - 2 2 行目の要素のビットごとの論理和が 1 1 - 1 1 列目の要素のビットごとの論理和が 1 1 - 2 2 列目の要素のビットごとの論理積が 0 0 の条件を満たす行列を見つける必要があります。