Time Limit: 2 sec / Memory Limit: 1024 MB
配点 : 300 点
ストーリー
始まりは、ある夜のことだった。そのころ、僕といろはちゃんはカラフルなブロックを積むゲームにハマっていた。そのゲームは何の変哲もないものだったが、数多くのバグが存在していた。例えば、消えるはずのブロックが消えなかったり、風が吹いてブロックが飛んだり、変な浮島が現れたり。
その夜、僕といろはちゃんはこのゲームでオンライン対戦をしていたが、その対戦結果が変だった。「スコアを計算する部分にもバグがあるんじゃないですか?」いろはちゃんの一言を、僕は本当か確かめることにした。
問題文
このゲームは 4 人プレイにのみ対応しており、各ラウンドで 1 位~ 3 位になると順位に応じた得点が得られる。各ラウンドの対戦結果が引き分けになることは無い。スコア表示画面では各々の得点が加算された履歴を見ることができる。
例えば、あるプレイヤーについて「1 2 2」と表示されている場合、そのプレイヤーはどこかのラウンドで 1 位を取り、それ以降のどこかのラウンドで 2 位を取り、それ以降のどこかのラウンドで 2 位を取り、それ以降のラウンドでは得点を獲得していないことがわかる。
僕といろはちゃんは N ラウンドの対戦を行った。4 人それぞれについて、N ラウンドのスコアデータが入力されるので、そのゲーム結果があり得るかを出力せよ。また、あり得るならば各ラウンドの対戦結果の例を出力せよ。
制約
- 入力はすべて整数
- 0 \leq A,B,C,D \leq 100
- 1 \leq N \leq 100
- 1 \leq a_i \leq 3 (1 \leq i \leq A)
- 1 \leq b_i \leq 3 (1 \leq i \leq B)
- 1 \leq c_i \leq 3 (1 \leq i \leq C)
- 1 \leq d_i \leq 3 (1 \leq i \leq D)
入力
入力は 5 行からなる。
1 行目にはラウンド数 N 、プレイヤー 1 がスコアを獲得した回数 A 、プレイヤー 2 がスコアを獲得した回数 B 、プレイヤー 3 がスコアを獲得した回数 C 、プレイヤー 4 がスコアを獲得した回数 D が入力される。
2 行目に入力される A 個の整数はプレイヤー 1 がスコアを獲得したラウンドにおける順位を表す。
3 \sim 5 行目にはそれぞれプレイヤー 2 \sim 4 のスコアに関する情報が 2 行目と同様に入力される。
以下を参考にせよ。
N A B C D a_1 a_2 \cdots a_A b_1 b_2 \cdots b_B c_1 c_2 \cdots c_C d_1 d_2 \cdots d_D
出力
入力を満たす各ラウンドの対戦結果が存在しない場合には、No
と出力せよ。
存在する場合にはYes
と出力し、続く N 行に各ラウンドの対戦結果について、4 位を取ったプレイヤーの番号を出力せよ。入力を満たす出力が複数存在する場合には、いずれを出力しても構わない。
入力例 1
1 1 1 1 0 1 3 2
出力例 1
Yes 4
入力例 2
1 0 0 0 0
出力例 2
No
入力例 3
10 8 7 8 7 1 3 1 3 1 3 1 2 3 3 1 2 3 3 3 2 2 2 1 1 2 2 1 1 2 3 2 2 1 3
出力例 3
Yes 4 2 4 3 3 2 1 4 1 2