AT_rcl_contest_2021_b マッサージチェア2021

Description

[problemUrl]: https://atcoder.jp/contests/rcl-contest-2021/tasks/rcl_contest_2021_b Xさんが働くオフィスのフリースペースには、$ N $ 行 $ N $ 列にマッサージチェアが並べられています。 上から $ i $ 行目、左から $ j $ 列目にあるマッサージチェアの座標を $ (i,\ j) $ と表します。 マッサージチェアには、色々な**性能**のものがあります。 $ (i,\ j) $ にあるマッサージチェアの**性能**を $ 1 $ 以上 $ 30 $ 以下の整数で表したものを $ E_{i,\ j} $ とし、高いほど良いことを意味します。 また、$ (i,\ j) $ にあるマッサージチェアを動かす**パワー**として、 $ 0 $ 以上 $ N $ 以下の整数を自由に設定することができ、これを $ P_{i,\ j} $ とします。 - **パワー**が $ 0 $ に設定されたマッサージチェアは使われず、人は座りません。 - **パワー**が $ 0 $ 以外に設定されたマッサージチェアには、必ず人が座ります。 - $ (i,\ j) $ にあるマッサージチェアを $ 0 $ 以外の**パワー** $ P_{\ i,\ j\ } $ で動かす場合、**パワー**に応じた**動作音**が周囲に聞こえてしまうため、 $ (i,\ j) $ から [マンハッタン距離](https://ja.wikipedia.org/wiki/%E3%83%9E%E3%83%B3%E3%83%8F%E3%83%83%E3%82%BF%E3%83%B3%E8%B7%9D%E9%9B%A2) が $ P_{i,\ j} $ 以下の他のマッサージチェアには、人が座らないようにする必要があります。 次の画像は、いくつかのマッサージチェアに $ 0 $ 以外の**パワー**を設定した例です。マスに書かれた整数は、その位置にあるマッサージチェアに割り当てられた**パワー**を表し、ピンク色のマスの位置にあるマッサージチェアには人が座らないようにする必要があります。 ![](data:image/png;base64,%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) Xさんが各マッサージチェアに設定する**パワー**を決定した後、**パワー**が $ 0 $ でない全てのマッサージチェアに人が座ります。 $ (i,\ j) $ にあるマッサージチェアに座った人は、$ E_{\ i,j\ }\ \times\ P_{\ i,j\ } $ の満足度を得ます。 マッサージチェアに座った人たちが得る満足度の和を、できるだけ大きくしてください。 各テストケースの得点およびこの問題の得点は、次のように計算されます。 - 1つのテストケースでは、マッサージチェアに座った人たちが得る満足度の総和がそのまま得点になります。 - テストケースは全部で $ 50 $ 個あります。各テストケースの得点の合計が、この問題の得点になります。

Input Format

入力は以下の形式で標準入力から与えられます。 1行目には整数 $ N $ を一つ含みます。続く $ N $ 行のそれぞれには、スペース区切りで整数を $ N $ 個含みます。 ```
\(\begin{array}{lll}
    N & & \\
    E_{ 0,0 } & \ldots & E_{ 0,N-1 } \\
    \vdots & \ddots & \vdots \\
    E_{ N-1,0 } & \ldots & E_{ N-1,N-1 }
  \end{array}\)
```

- $ N $ はマッサージチェアが並ぶ行・列の数を表す整数で、$ N\ =\ 40 $ を満たします。
- $ E_{\ i,j\ } $ は $ (i,\ j) $ にあるマッサージチェアの**性能**を表す整数で、$ 1\ 
                            

Output Format

出力は $ N $ 行で、各行にはスペース区切りで $ N $ 個の整数を標準出力へ出力してください。 ```
\(\begin{array}{lll}
    P_{ 0,0 } & \ldots & P_{ 0,N-1 } \\
    \vdots & \ddots & \vdots \\
    P_{ N-1,0 } & \ldots & P_{ N-1,N-1 }
  \end{array}\)
```

- $ P_{\ i,j\ } $ は $ (i,\ j) $ にあるマッサージチェアを動かす**パワー**を表す整数で、$ 0\ 
                            

Explanation/Hint

### テストケースの生成について 各ケースはテストケースジェネレータによって生成されています。 テストケースジェネレータはページ下部のリンクより提供しています。 テストケースジェネレータは以下の手順でケースを生成します。厳密には実装を見てください。説明・実装ともに、必ずしも目を通す必要はありません。 - $ E_{\ i,j\ } $ が $ x $ になる確率は、 $ 1/x^2 $ に比例するように生成されます。すなわち、$ E_{\ i,j\ } $ が大きな値になるほど、出現する頻度が低くなります。 ### 配布物について テストケースジェネレータ・テスター・サンプル入力データ・ビジュアライザを次のリンクから提供しています。 [テストケースジェネレータ・テスター・サンプル入力データ・ビジュアライザ (zip)](https://img.atcoder.jp/rcl-contest-2021/005883cbd767ff24197df17a19959035.zip) ### ビジュアライザの説明 入力ファイルと出力ファイルから、得点の計算および結果を可視化するビジュアライザを用意しました。 - このビジュアライザはデスクトップ版の [Google Chrome](https://www.google.co.jp/chrome/) および [Mozilla Firefox](https://www.mozilla.org/firefox/new/) の最新バージョン上で動作確認を行っています。全てのブラウザ環境で動作することを保証していません。 - このビジュアライザ上で計算された得点は、当コンテストでの得点ではありません。解答を AtCoder 上で提出する事によって採点が行われます。また、ビジュアライザ上で計算された得点は、当コンテスト上での得点を保証するものではありません。 - このビジュアライザを使用することによるあらゆる損害は保障しかねますので、予めご了承ください。 ビジュアライザは配布物にも含まれ、使用方法については配布物内のREADME.htmlに記述があります。 ### Sample Explanation 1 このケースは説明用のもので、入力の制約( $ N\ =\ 40 $ )を満たしていません。 $ 2\ \times\ 1\ +\ 5\ \times\ 1\ +\ 16\ \times\ 4\ =\ 71 $ がスコアとなります。\*\*パワー\*\*に $ N $ より大きな整数を設定できないことに注意してください。 ### Sample Explanation 2 このケースは、テスターに同梱している `input\_0.txt` と同じものです。\*\*性能\*\*が高いものほど、出現頻度が低くなります。 出力例は省略します。