atcoder#ABC166F. [ABC166F] Three Variables Game

[ABC166F] Three Variables Game

配点 : 600600

問題文

あるゲームでは 33 つの変数があり、それぞれ A,B,CA,B,C で表されます。

ゲームの進行と共に、あなたは NN 回の選択に迫られます。 それぞれの選択は文字列 sis_i によって示され、 sis_iAB のとき、AABB のどちらかに 11 を足しもう一方から 11 を引くこと、 AC のとき、AACC のどちらかに 11 を足しもう一方から 11 を引くこと、 BC のとき、BBCC のどちらかに 11 を足しもう一方から 11 を引くことを意味します。

いずれの選択の後にも、A,B,CA,B,C のいずれも負の値になってはいけません。

この条件を満たしつつ NN 回すべての選択を終えることが可能であるか判定し、可能であるならそのような選択方法をひとつ示してください。

制約

  • 1N1051 \leq N \leq 10^5
  • 0A,B,C1090 \leq A,B,C \leq 10^9
  • N,A,B,CN, A, B, C は整数である。
  • sis_iAB, AC, BC のいずれか

入力

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

NN AA BB CC

s1s_1

s2s_2

::

sNs_N

出力

条件を満たしつつ NN 個すべての選択を終えることが可能である場合は Yes を、そうでない場合は No を出力せよ。

加えて、前者の場合は続く NN 行に選択方法を示せ。i+1i+1 行目には ii 回目の選択で 11 を足す変数の名前 (A, B, C のいずれか) を出力せよ。

2 1 3 0
AB
AC
Yes
A
C

次のようにすることで 22 回すべての選択を終えることができます。

  • 11 回目の選択では、AA11 を足し BB から 11 を引く。AA の値が 22 に、BB の値が 22 に変化する。
  • 22 回目の選択では、CC11 を足し AA から 11 を引く。CC の値が 11 に、AA の値が 11 に変化する。
3 1 0 0
AB
BC
AB
No
1 0 9 0
AC
No
8 6 9 1
AC
BC
AB
BC
AC
BC
AB
AB
Yes
C
B
B
C
C
B
A
A