atcoder#CODEFESTIVAL2016FINALJ. Neue Spiel

Neue Spiel

题目描述

N N 行、横 N N 列のマス目が書かれたボードと N × N N\ \times\ N 枚のタイルがあります。

外側に面したマスの辺には、タイルの差込口がついています。 つまり、ボードの上下左右の辺にはそれぞれ N N 個の差込口がついており、合計で 4 × N 4\ \times\ N 個の差込口があることになります。 それぞれの差込口には以下のように番号が付けられています。

  • 上辺の差込口:左から順に U1, U2, ..., UN U1,\ U2,\ ...,\ UN
  • 下辺の差込口:左から順に D1, D2, ..., DN D1,\ D2,\ ...,\ DN
  • 左辺の差込口:上から順に L1, L2, ..., LN L1,\ L2,\ ...,\ LN
  • 右辺の差込口:上から順に R1, R2, ..., RN R1,\ R2,\ ...,\ RN

図:差込口の番号の例各差込口からはタイルを差し込むことが出来ます。 タイルが差し込まれたマスにすでにタイルが置かれていた場合は、置かれていたタイルは 1 1 つ先のマスに押し出され、さらにその 1 1 つ先のマスにタイルが置かれていた場合も同様に押し出されていきます。 ただし、押し出されたタイルがボードの外に出てしまう場合はタイルを差し込むことができません。 タイルを差し込んだときの挙動に関する詳しい例については入出力例 1 1 を参考にしてください。

すぬけくんは、N × N N\ \times\ N 枚のタイルを 1 1 枚ずつ差込口から差し込むことによって、各マスに 1 1 枚ずつタイルが置かれている状態にしようとしています。 ただし、差込口 Ui Ui からはちょうど Ui U_i 枚、差込口 Di Di からはちょうど Di D_i 枚、差込口 Li Li からはちょうど Li L_i 枚、差込口 Ri Ri からはちょうど Ri R_i 枚のタイルを差し込まなければなりません。 このような差し込み方が可能かどうかを判定してください。また、可能な場合は差し込む順番を出力してください。

输入格式

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

N N U1 U_1 U2 U_2 ... ... UN U_N D1 D_1 D2 D_2 ... ... DN D_N L1 L_1 L2 L_2 ... ... LN L_N R1 R_1 R2 R_2 ... ... RN R_N

输出格式

各マスに 1 1 枚ずつタイルが置かれるようにタイルを差し込むことが可能ならば、差込口の番号を差し込むべき順番で 1 1 行にひとつずつ出力せよ。不可能な場合は、代わりに NO と出力せよ。また、差し込む順番が複数考えられる場合は、そのうちの 1 1 つを出力すれば良い。

题目大意

Neue Spiel

题目描述

有一个N N 行,N N 列的正方形,共 N × N N\ \times\ N 个空格。

可以从上下左右四个方向推入方块,共 4 × N 4\ \times\ N 个插入口,编号为:

  • 上侧从左到右U1, U2, ..., UN U1,\ U2,\ ...,\ UN
  • 下侧从左到右:D1, D2, ..., DN D1,\ D2,\ ...,\ DN
  • 左侧从上到下: L1, L2, ..., LN L1,\ L2,\ ...,\ LN
  • 右侧从上到下:R1, R2, ..., RN R1,\ R2,\ ...,\ RN

如图是插入口的编号,方块可以推动其他方块,使其往推入方向移动一格,但不能把方块推出正方形外。

你有 N × N 个方块,全部都要推入正方形内。每个插入口的推入次数有一定的限制, UiU_i只能推入UiU_i次, DiD_i只能推入DiD_i次,LiL_i只能推入LiL_i次,RiR_i只能推入RiR_i次。 你需要判断这样推入是否可行,如果可行请输出一种方案

输入格式

第一行一个整数 NN 表示正方形边长,下面四行每行 N N 个数,表示表示 Ui U_i Di D_i Li L_i Ri R_ i

输出格式

如果可以插入 N × N N\ \times\ N 个方块,使得每一格都放置 1 个方块,那么按照应该插入口的号码的顺序,每 1 行输出一个插入口号码。 不可能的情况下,请输出 NONO 代替。 另外,在考虑多个插入顺序的情况下,输出其中的 1 个即可。

样例 #1

样例输入 #1

3
0 0 1
1 1 0
3 0 1
0 1 1

样例输出 #1

L1
L1
L1
L3
D1
R2
U3
R3
D2

样例 #2

样例输入 #2

2
2 0
2 0
0 0
0 0

样例输出 #2

NO

提示

制約

  • 1N300 1≦N≦300
  • Ui,Di,Li,Ri U_i,D_i,L_i,R_i 都是自然数。
  • Ui,Di,Li,Ri U_i,D_i,L_i,R_i 的和与 N× N N \times\ N 相等。

部分点

  • N40 N≦40 2000 2000 得分。
  • 另有 40N30040≦N≦300 的数据 100 100 获得另外 100100 得分。

Sample Explanation 1

样例解释:如下图

3
0 0 1
1 1 0
3 0 1
0 1 1
L1
L1
L1
L3
D1
R2
U3
R3
D2
2
2 0
2 0
0 0
0 0
NO

提示

制約

  • 1N300 1≦N≦300
  • Ui,Di,Li,Ri U_i,D_i,L_i,R_i 0 0 以上の整数である。
  • Ui,Di,Li,Ri U_i,D_i,L_i,R_i の和は N × N N\ \times\ N と等しい。

部分点

  • N40 N≦40 を満たすデータセットに正解した場合は、2000 2000 点が与えられる。
  • 追加制約のないデータセットに正解した場合は、上記とは別に 100 100 点が与えられる。

Sample Explanation 1

下図の通りに差し込めば良いです。矢印は差し込む場所を、丸はタイルを、丸の中に書かれた番号はそのタイルが何番目に差し込まれたかを表しています。 ![](https://atcoder.jp/img/code-festival-2016-final/252110b5818dc7d972f77d90f99cb8cb.png)