AT_abc166_f [ABC166F] Three Variables Game

题目描述

在某个游戏中,有三个变量,分别用 $A$、$B$、$C$ 表示。 随着游戏的进行,你需要进行 $N$ 次选择。每一次选择由字符串 $s_i$ 表示,当 $s_i$ 为 `AB` 时,表示你可以选择给 $A$ 或 $B$ 加 $1$,同时从另一个变量减去 $1$;当 $s_i$ 为 `AC` 时,表示你可以选择给 $A$ 或 $C$ 加 $1$,同时从另一个变量减去 $1$;当 $s_i$ 为 `BC` 时,表示你可以选择给 $B$ 或 $C$ 加 $1$,同时从另一个变量减去 $1$。 在每一次选择之后,$A$、$B$、$C$ 的值都不能为负数。 请判断是否存在一种选择方式,使得能够完成全部 $N$ 次选择且始终满足上述条件。如果存在,请给出一种可行的选择方案。

输入格式

输入以如下格式从标准输入读入: > $N$ $A$ $B$ $C$ > $s_1$ > $s_2$ > $\vdots$ > $s_N$

输出格式

如果存在一种选择方式能够完成全部 $N$ 次选择且始终满足条件,则输出 `Yes`,否则输出 `No`。 如果输出 `Yes`,则在接下来的 $N$ 行中,依次输出每次选择中被加 $1$ 的变量名(`A`、`B` 或 `C`)。

说明/提示

### 限制条件 - $1 \leq N \leq 10^5$ - $0 \leq A,B,C \leq 10^9$ - $N$、$A$、$B$、$C$ 均为整数 - $s_i$ 仅为 `AB`、`AC`、`BC` 之一 ### 样例解释 1 可以如下完成全部 $2$ 次选择: - 第 $1$ 次选择时,给 $A$ 加 $1$,从 $B$ 减 $1$。此时 $A$ 变为 $2$,$B$ 变为 $2$。 - 第 $2$ 次选择时,给 $C$ 加 $1$,从 $A$ 减 $1$。此时 $C$ 变为 $1$,$A$ 变为 $1$。 由 ChatGPT 4.1 翻译