Problem:


Score : 600 points

Problem Statement

There is a game that involves three variables, denoted A, B, and C.

As the game progresses, there will be N events where you are asked to make a choice.
Each of these choices is represented by a string s_i. If s_i is AB, you must add 1 to A or B then subtract 1 from the other; if s_i is AC, you must add 1 to A or C then subtract 1 from the other; if s_i is BC, you must add 1 to B or C then subtract 1 from the other.

After each choice, none of A, B, and C should be negative.

Determine whether it is possible to make N choices under this condition. If it is possible, also give one such way to make the choices.

Constraints

1 \leq N \leq 10^5

0 \leq A,B,C \leq 10^9

N, A, B, C are integers.

s_i is AB, AC, or BC.

Input

Input is given from Standard Input in the following format:

N A B C
s_1
s_2
:
s_N

Output

If it is possible to make N choices under the condition, print Yes; otherwise, print No.

Also, in the former case, show one such way to make the choices in the subsequent N lines. The (i+1)-th line should contain the name of the variable (A, B, or C) to which you add 1 in the i-th choice.

Sample Input 1

2 1 3 0
AB
AC

Sample Output 1

Yes
A
C

You can successfully make two choices, as follows:

In the first choice, add 1 to A and subtract 1 from B. A becomes 2, and B becomes 2.

In the second choice, add 1 to C and subtract 1 from A. C becomes 1, and A becomes 1.

Sample Input 2

3 1 0 0
AB
BC
AB

Sample Output 2

No

Sample Input 3

1 0 9 0
AC

Sample Output 3

No

Sample Input 4

8 6 9 1
AC
BC
AB
BC
AC
BC
AB
AB

Sample Output 4

Yes
C
B
B
C
C
B
A
A



Sample input:
2 1 3 0
AB
AC


Sample output:
Yes
A
C

Submission status: Wrong Answer

Solution code:
N,A,B,C=map(int,input().split())
r=[]
for i in range(N):
  R=input()
  r.append([str(c) for c in R])
flag=0
ans=[]
if A+B+C==0:
  flag=1
elif A+B+C==1:
  for i in range(N):
    if A==1:
      if "A" in r[i]:
        if r[i][0]=="A":
          ans.append(r[i][1])
          if r[i][1]=="B":
            B+=1
          else:
            C+=1
          A-=1
        else:
          ans.append(r[i][0])
          if r[i][0]=="B":
            B+=1
          else:
            C+=1
          A-=1
      else:
        flag=1
        break
    elif B==1:
      if "B" in r[i]:
        if r[i][0]=="B":
          ans.append(r[i][1])
          if r[i][1]=="A":
            A+=1
          else:
            C+=1
          B-=1
        else:
          ans.append(r[i][0])
          if r[i][0]=="A":
            A+=1
          else:
            C+=1
          B-=1
      else:
        flag=1
        break
    else:
      if "C" in r[i]:
        if r[i][0]=="C":
          ans.append(r[i][1])
          if r[i][1]=="B":
            B+=1
          else:
            A+=1
          C-=1
        else:
          ans.append(r[i][0])
          if r[i][1]=="B":
            B+=1
          else:
            A+=1
          C-=1
      else:
        flag=1
        break
else:
  for i in range(N):
    if A+B==0 and "A" in r[i] and "B" in r[i]:
      flag=1
    elif A+C==0 and "A" in r[i] and "C" in r[i]:
      flag=1
    elif C+B==0 and "C" in r[i] and "B" in r[i]:
      flag=1
    elif i!=N-1 and (r[i][0] not in r[i+1] or r[i][1] not in r[i+1]):
      if "A" in r[i] and "B" in r[i]:
        if "A" in r[i+1]:
          ans.append("A")
          A+=1
          B-=1
        else:
          ans.append("B")
          B+=1
          A-=1
      elif "A" in r[i] and "C" in r[i]:
        if "A" in r[i+1]:
          ans.append("A")
          A+=1
          B-=1
        else:
          ans.append("C")
          B+=1
          A-=1
      else:
        if "C" in r[i+1]:
          ans.append("C")
          C+=1
          B-=1
        else:
          ans.append("B")
          B+=1
          C-=1
    elif A+B+C==2 and (A==1 or B==1 or C==1) and i!=N-1:
      if A==0 and "A" not in r[i]:
        if "B" in r[i+1]:
          ans.append("B")
          B+=1
          C-=1
        else:
          ans.append("C")
          C+=1
          B-=1
      elif B==0 and "B" not in r[i]:
        if "A" in r[i+1]:
          ans.append("A")
          A+=1
          C-=1
        else:
          ans.append("C")
          C+=1
          A-=1
      else:
        if "B" in r[i+1]:
          ans.append("B")
          B+=1
          A-=1
        else:
          ans.append("A")
          A+=1
          B-=1
    else:
      if "A" in r[i] and "B" in r[i]:
        if A<B:
          ans.append("A")
          A+=1
          B-=1
        else:
          ans.append("B")
          B+=1
          A-=1
      elif "A" in r[i] and "C" in r[i]:
        if A<C:
          ans.append("A")
          A+=1
          C-=1
        else:
          ans.append("C")
          C+=1
          A-=1
      else:
        if C<B:
          ans.append("C")
          C+=1
          B-=1
        else:
          ans.append("B")
          B+=1
          C-=1
if flag==1:
  print("No")
else:
  print("Yes")
  for i in range(len(ans)):
    print(ans[i])

Submission status: Wrong Answer

Solution code:
N,A,B,C=map(int,input().split())
r=[]
for i in range(N):
  R=input()
  r.append([str(c) for c in R])
flag=0
ans=[]
if A+B+C==0:
  flag=1
elif A+B+C==1:
  for i in range(N):
    if A==1:
      if "A" in r[i]:
        if r[i][0]=="A":
          ans.append(r[i][1])
          if r[i][1]=="B":
            B+=1
          else:
            C+=1
          A-=1
        else:
          ans.append(r[i][0])
          if r[i][0]=="B":
            B+=1
          else:
            C+=1
          A-=1
      else:
        flag=1
        break
    elif B==1:
      if "B" in r[i]:
        if r[i][0]=="B":
          ans.append(r[i][1])
          if r[i][1]=="A":
            A+=1
          else:
            C+=1
          B-=1
        else:
          ans.append(r[i][0])
          if r[i][0]=="A":
            A+=1
          else:
            C+=1
          B-=1
      else:
        flag=1
        break
    else:
      if "C" in r[i]:
        if r[i][0]=="C":
          ans.append(r[i][1])
          if r[i][1]=="B":
            B+=1
          else:
            A+=1
          C-=1
        else:
          ans.append(r[i][0])
          if r[i][1]=="B":
            B+=1
          else:
            A+=1
          C-=1
      else:
        flag=1
        break
else:
  for i in range(N):
    if A+B==0 and "A" in r[i] and "B" in r[i]:
      flag=1
    elif A+C==0 and "A" in r[i] and "C" in r[i]:
      flag=1
    elif C+B==0 and "C" in r[i] and "B" in r[i]:
      flag=1
    elif i!=N-1 and (r[i][0] not in r[i+1] or r[i][1] not in r[i+1]):
      if "A" in r[i] and "B" in r[i]:
        if "A" in r[i+1]:
          ans.append("A")
          A+=1
          B-=1
        else:
          ans.append("B")
          B+=1
          A-=1
      elif "A" in r[i] and "C" in r[i]:
        if "A" in r[i+1]:
          ans.append("A")
          A+=1
          B-=1
        else:
          ans.append("C")
          B+=1
          A-=1
      else:
        if "C" in r[i+1]:
          ans.append("C")
          C+=1
          B-=1
        else:
          ans.append("B")
          B+=1
          C-=1
    elif A+B+C==2 and (A==1 or B==1 or C==1) and i!=N-1:
      if A==0 and "A" not in r[i]:
        if "B" in r[i+1]:
          ans.append("B")
          B+=1
          C-=1
        else:
          C+=1
          B-=1
      elif B==0 and "B" not in r[i]:
        if "A" in r[i+1]:
          ans.append("A")
          A+=1
          C-=1
        else:
          C+=1
          A-=1
      else:
        if "B" in r[i+1]:
          ans.append("B")
          B+=1
          A-=1
        else:
          A+=1
          B-=1
    else:
      if "A" in r[i] and "B" in r[i]:
        if A<B:
          ans.append("A")
          A+=1
          B-=1
        else:
          ans.append("B")
          B+=1
          A-=1
      elif "A" in r[i] and "C" in r[i]:
        if A<C:
          ans.append("A")
          A+=1
          C-=1
        else:
          ans.append("C")
          C+=1
          A-=1
      else:
        if C<B:
          ans.append("C")
          C+=1
          B-=1
        else:
          ans.append("B")
          B+=1
          C-=1
if flag==1:
  print("No")
else:
  print("Yes")
  for i in range(len(ans)):
    print(ans[i])

Submission status: Wrong Answer

Solution code:
N,A,B,C=map(int,input().split())
r=[]
for i in range(N):
  R=input()
  r.append([str(c) for c in R])
flag=0
ans=[]
if A+B+C==0:
  flag=1
elif A+B+C==1:
  for i in range(N):
    if A==1:
      if "A" in r[i]:
        if r[i][0]=="A":
          ans.append(r[i][1])
          if r[i][1]=="B":
            B+=1
          else:
            C+=1
          A-=1
        else:
          ans.append(r[i][0])
          if r[i][0]=="B":
            B+=1
          else:
            C+=1
          A-=1
      else:
        flag=1
        break
    elif B==1:
      if "B" in r[i]:
        if r[i][0]=="B":
          ans.append(r[i][1])
          if r[i][1]=="A":
            A+=1
          else:
            C+=1
          B-=1
        else:
          ans.append(r[i][0])
          if r[i][0]=="A":
            A+=1
          else:
            C+=1
          B-=1
      else:
        flag=1
        break
    else:
      if "C" in r[i]:
        if r[i][0]=="C":
          ans.append(r[i][1])
          if r[i][1]=="B":
            B+=1
          else:
            A+=1
          C-=1
        else:
          ans.append(r[i][0])
          if r[i][1]=="B":
            B+=1
          else:
            A+=1
          C-=1
      else:
        flag=1
        break
else:
  for i in range(N):
    if A+B==0 and "A" in r[i] and "B" in r[i]:
      flag=1
    elif A+C==0 and "A" in r[i] and "C" in r[i]:
      flag=1
    elif C+B==0 and "C" in r[i] and "B" in r[i]:
      flag=1
    elif i!=N-1 and (r[i][0] not in r[i+1] or r[i][1] not in r[i+1]):
      if "A" in r[i] and "B" in r[i]:
        if "A" in r[i+1]:
          ans.append("A")
          A+=1
          B-=1
        else:
          ans.append("B")
          B+=1
          A-=1
      elif "A" in r[i] and "C" in r[i]:
        if "A" in r[i+1]:
          ans.append("A")
          A+=1
          B-=1
        else:
          ans.append("C")
          B+=1
          A-=1
      else:
        if "C" in r[i+1]:
          ans.append("C")
          C+=1
          B-=1
        else:
          ans.append("B")
          B+=1
          C-=1
    else:
      if "A" in r[i] and "B" in r[i]:
        if A<B:
          ans.append("A")
          A+=1
          B-=1
        else:
          ans.append("B")
          B+=1
          A-=1
      elif "A" in r[i] and "C" in r[i]:
        if A<C:
          ans.append("A")
          A+=1
          C-=1
        else:
          ans.append("C")
          C+=1
          A-=1
      else:
        if C<B:
          ans.append("C")
          C+=1
          B-=1
        else:
          ans.append("B")
          B+=1
          C-=1
if flag==1:
  print("No")
else:
  print("Yes")
  for i in range(len(ans)):
    print(ans[i])

Submission status: Wrong Answer

Solution code:
N,A,B,C=map(int,input().split())
r=[]
for i in range(N):
  R=input()
  r.append([str(c) for c in R])
flag=0
ans=[]
if A+B+C==0:
  flag=1
elif A+B+C==1:
  for i in range(N):
    if A==1:
      if "A" in r[i]:
        if r[i][0]=="A":
          ans.append(r[i][1])
          if r[i][1]=="B":
            B+=1
          else:
            C+=1
          A-=1
        else:
          ans.append(r[i][0])
          if r[i][0]=="B":
            B+=1
          else:
            C+=1
          A-=1
      else:
        flag=1
        break
    elif B==1:
      if "B" in r[i]:
        if r[i][0]=="B":
          ans.append(r[i][1])
          if r[i][1]=="A":
            A+=1
          else:
            C+=1
          B-=1
        else:
          ans.append(r[i][0])
          if r[i][0]=="A":
            A+=1
          else:
            C+=1
          B-=1
      else:
        flag=1
        break
    else:
      if "C" in r[i]:
        if r[i][0]=="C":
          ans.append(r[i][1])
          if r[i][1]=="B":
            B+=1
          else:
            A+=1
          C-=1
        else:
          ans.append(r[i][0])
          if r[i][1]=="B":
            B+=1
          else:
            A+=1
          C-=1
      else:
        flag=1
        break
else:
  for i in range(N):
    if A+B==0 and "A" in r[i] and "B" in r[i]:
      flag=1
    elif A+C==0 and "A" in r[i] and "C" in r[i]:
      flag=1
    elif C+B==0 and "C" in r[i] and "B" in r[i]:
      flag=1
    elif A+B+C==2 and i!=N-1 and (A==1 or B==1 or C==1):
      if "A" in r[i] and "B" in r[i]:
        if "A" in r[i+1]:
          ans.append("A")
          A+=1
          B-=1
        else:
          ans.append("B")
          B+=1
          A-=1
      elif "A" in r[i] and "C" in r[i]:
        if "A" in r[i+1]:
          ans.append("A")
          A+=1
          B-=1
        else:
          ans.append("C")
          B+=1
          A-=1
      else:
        if "C" in r[i+1]:
          ans.append("C")
          C+=1
          B-=1
        else:
          ans.append("B")
          B+=1
          C-=1
    else:
      if "A" in r[i] and "B" in r[i]:
        if A<B:
          ans.append("A")
          A+=1
          B-=1
        else:
          ans.append("B")
          B+=1
          A-=1
      elif "A" in r[i] and "C" in r[i]:
        if A<C:
          ans.append("A")
          A+=1
          C-=1
        else:
          ans.append("C")
          C+=1
          A-=1
      else:
        if C<B:
          ans.append("C")
          C+=1
          B-=1
        else:
          ans.append("B")
          B+=1
          C-=1
if flag==1:
  print("No")
else:
  print("Yes")
  for i in range(len(ans)):
    print(ans[i])

Submission status: Wrong Answer

Solution code:
N,A,B,C=map(int,input().split())
r=[]
for i in range(N):
  R=input()
  r.append([str(c) for c in R])
flag=0
ans=[]
if A+B+C==0:
  flag=1
elif A+B+C==1:
  for i in range(N):
    if A==1:
      if "A" in r[i]:
        if r[i][0]=="A":
          ans.append(r[i][1])
          if r[i][1]=="B":
            B+=1
          else:
            C+=1
          A-=1
        else:
          ans.append(r[i][0])
          if r[i][0]=="B":
            B+=1
          else:
            C+=1
          A-=1
      else:
        flag=1
        break
    elif B==1:
      if "B" in r[i]:
        if r[i][0]=="B":
          ans.append(r[i][1])
          if r[i][1]=="A":
            A+=1
          else:
            C+=1
          B-=1
        else:
          ans.append(r[i][0])
          if r[i][0]=="A":
            A+=1
          else:
            C+=1
          B-=1
      else:
        flag=1
        break
    else:
      if "C" in r[i]:
        if r[i][0]=="C":
          ans.append(r[i][1])
          if r[i][1]=="B":
            B+=1
          else:
            A+=1
          C-=1
        else:
          ans.append(r[i][0])
          if r[i][1]=="B":
            B+=1
          else:
            A+=1
          C-=1
      else:
        flag=1
        break
else:
  for i in range(N):
    if A+B==0 and "A" in r and "B" in r:
      flag=1
    elif A+C==0 and "A" in r and "C" in r:
      flag=1
    elif C+B==0 and "C" in r and "B" in r:
      flag=1
    elif A+B+C==2 and i!=N-1 and (A==1 or B==1 or C==1):
      if "A" in r[i] and "B" in r[i]:
        if "A" in r[i+1]:
          ans.append("A")
          A+=1
          B-=1
        else:
          ans.append("B")
          B+=1
          A-=1
      elif "A" in r[i] and "C" in r[i]:
        if "A" in r[i+1]:
          ans.append("A")
          A+=1
          B-=1
        else:
          ans.append("C")
          B+=1
          A-=1
      else:
        if "C" in r[i+1]:
          ans.append("C")
          C+=1
          B-=1
        else:
          ans.append("B")
          B+=1
          C-=1
    else:
      if "A" in r[i] and "B" in r[i]:
        if A<B:
          ans.append("A")
          A+=1
          B-=1
        else:
          ans.append("B")
          B+=1
          A-=1
      elif "A" in r[i] and "C" in r[i]:
        if A<C:
          ans.append("A")
          A+=1
          C-=1
        else:
          ans.append("C")
          C+=1
          A-=1
      else:
        if C<B:
          ans.append("C")
          C+=1
          B-=1
        else:
          ans.append("B")
          B+=1
          C-=1
if flag==1:
  print("No")
else:
  print("Yes")
  for i in range(len(ans)):
    print(ans[i])

Submission status: Wrong Answer

Solution code:
import sys
input = sys.stdin.readline

n, a, b, c = [int(x) for x in input().split()]
score = {}
score["A"] = a
score["B"] = b
score["C"] = c     
S = [input().rstrip() for _ in range(n)]
ans = []

for i in range(n - 1):
    s = S[i]
    next_s = S[i + 1]
    s1 = s[0]
    s2 = s[1]
    if score[s1] == 0 and score[s2] == 0:
        print("No")
        sys.exit()
    elif score[s1] == 0:
        ans.append(s1)
        score[s1] += 1
        score[s2] -= 1
    elif score[s2] == 0:
        ans.append(s2)
        score[s1] -= 1
        score[s2] += 1
    else:
        if score[s1] >= score[s2]:
            ans.append(s2)
            score[s2] += 1
            score[s1] -= 1
        else:
            ans.append(s1)
            score[s1] += 1
            score[s2] -= 1
s = S[-1]
s1 = s[0]
s2 = s[1]

if score[s1] == 0 and score[s2] == 0:
        print("No")
        sys.exit()
elif score[s1] == 0:
    ans.append(s1)
    score[s1] += 1
    score[s2] -= 1
elif score[s2] == 0:
    ans.append(s2)
    score[s1] -= 1
    score[s2] += 1
else:
    ans.append(s1)
print("Yes")
for i in ans:
    print(i)

Submission status: Wrong Answer

Solution code:
n, a, b, c = map(int, input().split())
_a, _b, _c = a, b, c


def choice(i, k):
    if i > k:
        return i - 1, k + 1
    return i + 1, k - 1


def print_choice(i, k, s_i, s_k):
    if i > k:
        print(s_k)
        return i - 1, k + 1
    print(s_i)
    return i + 1, k - 1


L = []

for _ in range(n):
    i = input()
    if i == 'AB':
        a, b = choice(a, b)
    if i == 'AC':
        a, c = choice(a, c)
    if i == 'BC':
        b, c = choice(b, c)
    L.append(i)

if a >= 0 and b >= 0 and c >= 0:
    print('Yes')
    for l in L:
        if l == 'AB':
            _a, _b = print_choice(_a, _b, 'A', 'B')
        if l == 'AC':
            _a, _c = print_choice(_a, _c, 'A', 'C')
        if l == 'BC':
            _b, _c = print_choice(_b, _c, 'B', 'C')
else:
    print('No')

Submission status: Wrong Answer

Solution code:
n, a, b, c = map(int, input().split())
_a, _b, _c = a, b, c


def choice(i, k):
    if i > k:
        return i - 1, k + 1
    return i + 1, k - 1


def print_choice(i, k, s_i, s_k):
    if i > k:
        print(s_k)
        return i - 1, k + 1
    print(s_i)
    return i + 1, k - 1


L = []

for _ in range(n):
    i = input()
    if i == 'AB':
        a, b = choice(a, b)
    if i == 'AC':
        a, c = choice(a, c)
    if i == 'BC':
        b, c = choice(b, c)
    L.append(i)

if a >= 0 and b >= 0 and c >= 0:
    print('Yes')
    for l in L:
        if l == 'AB':
            a, b = print_choice(_a, _b, 'A', 'B')
        if l == 'AC':
            a, c = print_choice(_a, _c, 'A', 'C')
        if l == 'BC':
            b, c = print_choice(_b, _c, 'B', 'C')
else:
    print('No')

Submission status: Wrong Answer

Solution code:
n, a, b, c = map(int, input().split())
_a, _b, _c = a, b, c


def choice(i, k):
    if i > k:
        return i - 1, k + 1
    return i + 1, k - 1


def print_choice(i, k, s_i, s_k):
    if i > k:
        print(s_k)
        return i - 1, k + 1
    print(s_i)
    return i + 1, k - 1

L = []

for _ in range(n):
    i = input()
    if i == 'AB':
        a, b = choice(a, b)
    if i == 'AC':
        a, c = choice(a, c)
    if i == 'BC':
        b, c = choice(b, c)
    L.append(i)

if a >= 0 and b >= 0 and c >= 0:
    print('Yes')
    for l in L:
        if l == 'AB':
            a, b = print_choice(a, b, 'A', 'B')
        if l == 'AC':
            a, c = print_choice(a, c, 'A', 'C')
        if l == 'BC':
            b, c = print_choice(b, c, 'B', 'C')
else:
    print('No')

Submission status: Wrong Answer

Solution code:
n,A,B,C = map(int, input().split())

if A+B+C == 2:
  print("No")

Submission status: Wrong Answer

Solution code:
n,A,B,C = map(int, input().split())

if n == 2:
  print("No")

Submission status: Wrong Answer

Solution code:
# -*- coding: utf-8 -*-
n, a, b, c = map(int, input().split())

value_dict = {'A': a, 'B': b, 'C': c}
result_list = []
input_list = []
flag = True

for i in range(n):
    input_list.append(input())

for next, input in enumerate(input_list, 1):
    if value_dict[input[0]] < value_dict[input[1]]:
        value_dict[input[0]] += 1
        value_dict[input[1]] -= 1
        result_list.append(input[0])
    elif value_dict[input[1]] < value_dict[input[0]]:
        value_dict[input[1]] += 1
        value_dict[input[0]] -= 1
        result_list.append(input[1])
    else:
        if value_dict[input[0]] == 0:
            flag = True
            break
        elif next == len(input_list):
            result_list.append(input[0])
        elif input[0] in input_list[next]:
            value_dict[input[0]] += 1
            value_dict[input[1]] -= 1
            result_list.append(input[0])
        else:
            value_dict[input[1]] += 1
            value_dict[input[0]] -= 1
            result_list.append(input[1])

if flag:
    print('Yes')
    for result in result_list:
        print(result)

else:
    print('No')

Submission status: Wrong Answer

Solution code:
import sys
read = sys.stdin.read
readline = sys.stdin.readline
readlines = sys.stdin.readlines

def main():
    n,A,B,C = map(int, readline().split())
    N = A + B + C
    S = [readline().strip() for _ in range(n)]

    ans = []
    possible = True
    for i, s in enumerate(S):
        if s == "AB":
            if A == B == 0:
                print("No")
                possible = False
                break
            
            if i < n - 1 and N == 2 and A == B == 1:
                if S[i+1] == "AC":
                    A += 1
                    B -= 1
                    ans.append("A")
                elif S[i+1] == "BC":
                    A -= 1
                    B += 1
                    ans.append("B")
                else:
                    A += 1
                    B -= 1
                    ans.append("A")
            else:
                if A < B:
                    A += 1
                    B -= 1
                    ans.append("A")
                else:
                    A -= 1
                    B += 1
                    ans.append("B")

        elif s == "AC":
            if A == C == 0:
                print("No")
                possible = False
                break
            
            if i < n - 1 and N == 2 and A == C == 1:
                if S[i+1] == "AB":
                    A += 1
                    B -= 1
                    ans.append("A")
                elif S[i+1] == "BC":
                    A -= 1
                    C += 1
                    ans.append("C")
                else:
                    A += 1
                    B -= 1
                    ans.append("A")
            else:
                if A < C:
                    A += 1
                    C -= 1
                    ans.append("A")
                else:
                    A -= 1
                    C += 1
                    ans.append("C")

        else:
            if B == C == 0:
                print("No")
                possible = False
                break
            
            if i < n - 1 and N == 2 and B == C == 1:
                if S[i+1] == "AB":
                    B += 1
                    C -= 1
                    ans.append("B")
                elif S[i+1] == "AC":
                    B -= 1
                    C += 1
                    ans.append("C")
                else:
                    B += 1
                    C -= 1
                    ans.append("B")
            else:
                if B < C:
                    B += 1
                    C -= 1
                    ans.append("B")
                else:
                    B -= 1
                    C += 1
                    ans.append("C")
                    
    if possible:
        print("Yes")
        print("\n".join(ans))


if __name__ == "__main__":
    main()

Submission status: Wrong Answer

Solution code:
print("No")

Submission status: Wrong Answer

Solution code:
n, a, b, c = map(int, input().split())
abc = list((a, b, c))
ans = [0] * n
dic = {'A': 0, 'B': 1, 'C': 2}
flag = True
for i in range(n):
    s = list(input())
    if abc[dic[s[0]]] == 0 and abc[dic[s[1]]] == 0:
        flag = False
        break
    elif abc[dic[s[0]]] <= abc[dic[s[1]]]:
        abc[dic[s[0]]] += 1
        abc[dic[s[1]]] -= 1
        ans[i] = s[0]
    else:
        abc[dic[s[0]]] -= 1
        abc[dic[s[1]]] += 1
        ans[i] = s[1]
if flag:
    print('Yes')
    print(*ans, sep='\n')
else:
    print('No')

Submission status: Wrong Answer

Solution code:
import sys
read = sys.stdin.read
readline = sys.stdin.readline
readlines = sys.stdin.readlines

def main():
    n,A,B,C = map(int, readline().split())
    N = A + B + C
    S = [readline().strip() for _ in range(n)]

    ans = []
    possible = True
    for i, s in enumerate(S):
        if s == "AB":
            if A + B == 0:
                print("No")
                possible = False
                break
            
            if i < n - 1 and A == B == 1:
                if S[i+1] == "AC":
                    A += 1
                    B -= 1
                    ans.append("A")
                elif S[i+1] == "BC":
                    A -= 1
                    B += 1
                    ans.append("B")
                else:
                    A += 1
                    B -= 1
                    ans.append("A")
            else:
                if A < B:
                    A += 1
                    B -= 1
                    ans.append("A")
                else:
                    A -= 1
                    B += 1
                    ans.append("B")

        elif s == "AC":
            if A + C == 0:
                print("No")
                possible = False
                break
            
            if i < n - 1 and A == C == 1:
                if S[i+1] == "AB":
                    A += 1
                    B -= 1
                    ans.append("A")
                elif S[i+1] == "BC":
                    A -= 1
                    C += 1
                    ans.append("C")
                else:
                    A += 1
                    B -= 1
                    ans.append("A")
            else:
                if A < C:
                    A += 1
                    C -= 1
                    ans.append("A")
                else:
                    A -= 1
                    C += 1
                    ans.append("C")

        else:
            if B + C == 0:
                print("No")
                possible = False
                break
            
            if i < n - 1 and B == C == 1:
                if S[i+1] == "AB":
                    B += 1
                    C -= 1
                    ans.append("B")
                elif S[i+1] == "AC":
                    B -= 1
                    C += 1
                    ans.append("C")
                else:
                    B += 1
                    C -= 1
                    ans.append("B")
            else:
                if B < C:
                    B += 1
                    C -= 1
                    ans.append("B")
                else:
                    B -= 1
                    C += 1
                    ans.append("C")

    if possible:
        print("Yes")
        print("\n".join(ans))


if __name__ == "__main__":
    main()

Submission status: Wrong Answer

Solution code:
n, a, b, c = map(int, input().split())
res = []
negative = False
for _ in range(n):
    s = input()
    if negative: continue
    if s == 'AB':
        if a < b: 
            res.append('A')
            a += 1
            b -= 1
        else:
            res.append('B')
            b += 1
            a -= 1
    elif s == 'BC':
        if b < c: 
            res.append('B')
            b += 1
            c -= 1
        else:
            res.append('C')
            c += 1
            b -= 1
    else:
        if a < c: 
            res.append('A')
            a += 1
            c -= 1
        else:
            res.append('C')
            c += 1
            a -= 1
    if a<0 or b<0 or c<0: negative = True

if negative: print('No')
else:
    print('Yes')
    print(*res, sep='\n')

Submission status: Wrong Answer

Solution code:
import sys
read = sys.stdin.read
readline = sys.stdin.readline
readlines = sys.stdin.readlines

def main():
    n,A,B,C = map(int, readline().split())
    N = A + B + C
    S = [readline().strip() for _ in range(n)]

    ans = []
    possible = True
    for i, s in enumerate(S):
        if s == "AB":
            if A + B == 0:
                print("No")
                possible = False
                break
            
            if i < n - 1 and A == B:
                if S[i+1] == "AC":
                    A += 1
                    B -= 1
                    ans.append("A")
                elif S[i+1] == "BC":
                    A -= 1
                    B += 1
                    ans.append("B")
                else:
                    A += 1
                    B -= 1
                    ans.append("A")
            else:
                if A < B:
                    A += 1
                    B -= 1
                    ans.append("A")
                else:
                    A -= 1
                    B += 1
                    ans.append("B")

        elif s == "AC":
            if A + C == 0:
                print("No")
                possible = False
                break
            
            if i < n - 1 and A == C:
                if S[i+1] == "AB":
                    A += 1
                    B -= 1
                    ans.append("A")
                elif S[i+1] == "BC":
                    A -= 1
                    C += 1
                    ans.append("C")
                else:
                    A += 1
                    B -= 1
                    ans.append("A")
            else:
                if A < C:
                    A += 1
                    C -= 1
                    ans.append("A")
                else:
                    A -= 1
                    C += 1
                    ans.append("C")

        else:
            if B + C == 0:
                print("No")
                possible = False
                break
            
            if i < n - 1 and B == C:
                if S[i+1] == "AB":
                    B += 1
                    C -= 1
                    ans.append("B")
                elif S[i+1] == "AC":
                    B -= 1
                    C += 1
                    ans.append("C")
                else:
                    B += 1
                    C -= 1
                    ans.append("B")
            else:
                if B < C:
                    B += 1
                    C -= 1
                    ans.append("B")
                else:
                    B -= 1
                    C += 1
                    ans.append("C")

    if possible:
        print("Yes")
        print("\n".join(ans))


if __name__ == "__main__":
    main()