atcoder#ABC166F. [ABC166F] Three Variables Game

[ABC166F] Three Variables Game

题目描述

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

ゲームの進行と共に、あなたは N N 回の選択に迫られます。 それぞれの選択は文字列 si s_i によって示され、 si s_i AB のとき、A A B B のどちらかに 1 1 を足しもう一方から 1 1 を引くこと、 AC のとき、A A C C のどちらかに 1 1 を足しもう一方から 1 1 を引くこと、 BC のとき、B B C C のどちらかに 1 1 を足しもう一方から 1 1 を引くことを意味します。

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

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

输入格式

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

N N A A B B C C s1 s_1 s2 s_2 : : sN s_N

输出格式

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

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

题目大意

你开始有三个变量AA,BB,CC,它们各自有一个值.

你需要依次进行nn次操作,对于每次操作,有一个参数ss,这个参数只可能是"AB","AC","BC"中的一个.

当s="AB"时,你可以选择以下方案中的一种:

  1. A=A+1,B=B1A=A+1,B=B-1
  2. A=A1,B=B+1A=A-1,B=B+1

当s="AC"时,你可以选择以下方案中的一种:

  1. A=A+1,C=C1A=A+1,C=C-1
  2. A=A1,C=C+1A=A-1,C=C+1

当s="BC"时,你可以选择以下方案中的一种:

  1. B=B+1,C=C1B=B+1,C=C-1
  2. B=B1,C=C+1B=B-1,C=C+1

若存在一种选择操作的方案使每次操作结束之后AA,BB,CC均为自然数,输出"Yes",并依次输出每次操作中变大的变量名.否则输出"No".

2 1 3 0
AB
AC
Yes
A
C
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

提示

制約

  • 1  N  105 1\ \leq\ N\ \leq\ 10^5
  • 0  A,B,C  109 0\ \leq\ A,B,C\ \leq\ 10^9
  • N, A, B, C N,\ A,\ B,\ C は整数である。
  • si s_i AB, AC, BC のいずれか

Sample Explanation 1

次のようにすることで 2 2 回すべての選択を終えることができます。 - 1 1 回目の選択では、A A 1 1 を足し B B から 1 1 を引く。A A の値が 2 2 に、B B の値が 2 2 に変化する。 - 2 2 回目の選択では、C C 1 1 を足し A A から 1 1 を引く。C C の値が 1 1 に、A A の値が 1 1 に変化する。