atcoder#ABC295H. [ABC295Ex] E or m

[ABC295Ex] E or m

配点 : 600600

問題文

NNMM 列のグリッド AA があり、はじめ全てのマスに 00 が書き込まれています。 ここに以下の操作を行います。

  • 1iN1 \le i \le N を満たす各整数 ii に対して、 AAii 行目の左から 00 個以上のマスの数字を 11 にする。
  • 1jM1 \le j \le M を満たす各整数 jj に対して、 AAjj 列目の上から 00 個以上のマスの数字を 11 にする。

この手続きによって作ることのできる AA の集合を SS とします。

0, 1, ? からなる NNMM 列のグリッド XX が与えられます。 ?01 に置き換えて得られるグリッドは XX に含まれる ? の総数を qq とすると 2q2^q 個ありますが、このうち SS の要素であるものはいくつありますか? 答えは非常に大きくなる場合があるので、 998244353998244353 で割った余りを求めてください。

制約

  • N,MN,M は整数
  • 1N,M181 \le N,M \le 18
  • XX0, 1, ? からなる NNMM 列のグリッド

入力

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

NN MM

X1,1X1,2X1,MX_{1,1} X_{1,2} \dots X_{1,M}

X2,1X2,2X2,MX_{2,1} X_{2,2} \dots X_{2,M}

\vdots

XN,1XN,2XN,MX_{N,1} X_{N,2} \dots X_{N,M}

出力

答えを整数として出力せよ。

2 3
0?1
?1?
6

条件を満たすグリッドは以下の 66 つです。

011  011  001
010  011  110

001  011  011
111  110  111
5 3
101
010
101
010
101
0

XX? が存在しない場合も、答えが 00 である場合もあります。

18 18
??????????????????
??????????????????
??????????????????
??????????????????
??????????????????
??????????????????
??????????????????
??????????????????
??????????????????
??????????????????
??????????????????
??????????????????
??????????????????
??????????????????
??????????????????
??????????????????
??????????????????
??????????????????
462237431

答えを 998244353998244353 で割った余りを求めることに注意してください。