atcoder#AGC057E. [AGC057E] RowCol/ColRow Sort

[AGC057E] RowCol/ColRow Sort

配点 : 14001400

問題文

H×WH\times W 行列 A=(Ai,j)A = (A_{i,j}) (1iH,1jW1\leq i\leq H, 1\leq j\leq W) に対して、次の操作を考えます。

  • 行ソート:すべての行を昇順にソートする。つまり、すべての ii に対して Ai,1,,Ai,WA_{i,1},\ldots,A_{i,W} を昇順にソートする。
  • 列ソート:すべての列を昇順にソートする。つまり、すべての jj に対して A1,j,,AH,jA_{1,j},\ldots,A_{H,j} を昇順にソートする。

H×WH\times W 行列 B=(Bi,j)B = (B_{i,j}) が与えられます。次の 22 条件をともに満たす H×WH\times W 行列 AA の総数を 998244353998244353 で割った余りを求めてください。

  • AA に対して行ソート、列ソートをこの順に行った結果は BB に一致する。
  • AA に対して列ソート、行ソートをこの順に行った結果は BB に一致する。

制約

  • 1H,W15001\leq H, W\leq 1500
  • 0Bi,j90\leq B_{i,j}\leq 9
  • 任意の 1iH1\leq i\leq H および 1jW11\leq j\leq W - 1 に対して Bi,jBi,j+1B_{i,j}\leq B_{i,j+1}
  • 任意の 1jW1\leq j\leq W および 1iH11\leq i\leq H - 1 に対して Bi,jBi+1,jB_{i,j}\leq B_{i+1,j}
  • 入力される値はすべて整数

入力

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

HH WW

B1,1B_{1,1} B1,2B_{1,2} \ldots B1,WB_{1,W}

\vdots

BH,1B_{H,1} BH,2B_{H,2} \ldots BH,WB_{H,W}

出力

条件を満たす行列 AA の総数を 998244353998244353 で割った余りを出力してください。

2 2
0 0
1 2
4

条件を満たす行列は次の 44 つです:(0012)\begin{pmatrix}0&0\\1&2\end{pmatrix}, (0021)\begin{pmatrix}0&0\\2&1\end{pmatrix}, (1200)\begin{pmatrix}1&2\\0&0\end{pmatrix}, (2100)\begin{pmatrix}2&1\\0&0\end{pmatrix}.

例えば、(2100)\begin{pmatrix}2&1\\0&0\end{pmatrix} が条件を満たすことは次のように確かめられます。

  • 行ソート、列ソートをこの順に行う場合:$\begin{pmatrix}2&1\\0&0\end{pmatrix}\to \begin{pmatrix}1&2\\0&0\end{pmatrix} \to \begin{pmatrix}0&0\\1&2\end{pmatrix}$.
  • 列ソート、行ソートをこの順に行う場合:$\begin{pmatrix}2&1\\0&0\end{pmatrix}\to \begin{pmatrix}0&0\\2&1\end{pmatrix} \to \begin{pmatrix}0&0\\1&2\end{pmatrix}$.
3 3
0 1 3
2 4 7
5 6 8
576

例えば (576301482)\begin{pmatrix}5&7&6\\3&0&1\\4&8&2\end{pmatrix} が条件を満たします。このことは次のように確かめられます。

  • 行ソート、列ソートをこの順に行う場合:$\begin{pmatrix}5&7&6\\3&0&1\\4&8&2\end{pmatrix}\to \begin{pmatrix}5&6&7\\0&1&3\\2&4&8\end{pmatrix} \to \begin{pmatrix}0&1&3\\2&4&7\\5&6&8\end{pmatrix}$.
  • 列ソート、行ソートをこの順に行う場合:$\begin{pmatrix}5&7&6\\3&0&1\\4&8&2\end{pmatrix}\to \begin{pmatrix}3&0&1\\4&7&2\\5&8&6\end{pmatrix} \to \begin{pmatrix}0&1&3\\2&4&7\\5&6&8\end{pmatrix}$.
3 5
0 0 0 1 1
0 0 1 1 2
0 1 1 2 2
10440
1 7
2 3 3 6 8 8 9
1260