問題一覧 > 通常問題

No.918 LISGRID

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 512 MB / スペシャルジャッジ問題 (複数の解が存在する可能性があります)
タグ : / 解いたユーザー数 45
作問者 : ningenMe / テスター : tempura_pp
7 ProblemId : 3092 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2020-12-06 13:00:40

問題文

HW列からなるグリッドがあります。
最初全てのマスには何も書かれていません。
ここに以下の条件を満たすようにHW個の全てのマスに数字を書き込むことを考えます。


  • 書き込む数字は1以上HW以下であり、全て異なる。

  • 長さHの整数列S1,S2, ,SHを考える。
    i (1iH)番目の要素Siを「グリッドのi行目に書き込まれたW個の数字を左から右に向かって順に見たものを一つの数列としたときの、 その数列の最長増加部分列の長さ」と定義する。
    この数列Sの要素の順番を適切に並び替えると、数列Aと一致させることが可能である。

  • 長さWの整数列T1,T2, ,TWを考える。
    j (1jW)番目の要素Tjを「グリッドのj列目に書き込まれたH個の数字を上から下に向かって順に見たものを一つの数列としたときの、 その数列の最長増加部分列の長さ」と定義する。
    この数列Tの要素の順番を適切に並び替えると、数列Bと一致させることが可能である。
  •   
ここで部分列とは「ある整数列の要素を0個以上いくつか選んで削除し、残ったものを元の順序を保って並べた整数列」を表します。
増加部分列とは「整数列の部分列のうち、隣接する2要素を見ると常に右の方が真に大きいもの」を表します。
また最長増加部分列とは「増加部分列の長さが最長であるもの」を表します。

これらの条件を全て満たすように数字を書いたグリッドを一つ構築してください。
なお、条件を満たすグリッドは少なくとも一つ存在することが証明できます。

入力

H W
A1 A2  AH
B1 B2  BW

入力は全て整数である
1H,W400
1AiW(1iH)
1BiH(1iW)

出力

C1,1 C1,2  C1,W
C2,1 C2,2  C2,W

CH,1 CH,2  CH,W

条件を満たすグリッドを上記の形式で出力してください。
出力するグリッドの要素は1以上HW以下であり、全て異なります。
最後に改行してください。

サンプル

サンプル1
入力
2 2
2 1
2 2
出力
2 1
3 4


この出力例のとき、図のようにS={1,2},T={2,2}となります。
Sの要素の順番を並べ替えるとAに一致させることができ、Tは既にBに一致しているため条件を満たします。

サンプル2
入力
3 2
2 2 2
3 2
出力
1 5
2 3
4 6

答えは複数存在することがあります。

サンプル3
入力
2 5
2 3
2 1 2 1 2
出力
10 9 2 1 7
4 3 6 5 8

部分列の定義に「元の数列において連続であること」は含まれていないことに注意してください。

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。