Problem p02692 (C++) — buggy submission, verdict: Runtime Error

#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (n); i++)
#define all(x) begin(x), end(x)
using namespace std;
typedef long long ll;
typedef pair<int, int> P;

int fab, fbc, fcd;
int main() {
  int n;
  cin >> n;
  ll a, b, c;
  cin >> a >> b >> c;

  if (a + b + c == 0) {
    puts("No");
    return 0;
  }
  vector<string> s(n);
  rep(i, n) cin >> s[i];
  string ans;
  rep(i, n) {
    if (s[i] == "AB") {
      if (a == 0 && b == 0) {
        puts("No");
        return 0;
      }
      if (a < b) {
        ans += 'A';
        a++;
        b--;
      } else if (a > b) {
        ans += 'B';
        b++;
        a--;
      } else {
        if (i <= n - 1 && s[i + 1] == "AC") {
          ans += 'A';
          a++;
          b--;
        } else if (i <= n - 1 && s[i + 1] == "BC") {
          ans += 'B';
          b++;
          a--;
        } else {
          ans += 'B';
          b++;
          a--;
        }
      }
    }
    if (s[i] == "AC") {
      if (a == 0 && c == 0) {
        puts("No");
        return 0;
      }
      if (a < c) {
        ans += 'A';
        a++;
        c--;
      } else if (a > c) {
        ans += 'C';
        c++;
        a--;
      } else {
        if (i <= n - 1 && s[i + 1] == "AB") {
          ans += 'A';
          a++;
          c--;
        } else if (i <= n - 1 && s[i + 1] == "BC") {
          ans += 'C';
          c++;
          a--;
        } else {
          ans += 'C';
          c++;
          a--;
        }
      }
    }
    if (s[i] == "BC") {
      if (c == 0 && b == 0) {
        puts("No");
        return 0;
      }
      if (c < b) {
        ans += 'C';
        c++;
        b--;
      } else if (c > b) {
        ans += 'B';
        b++;
        c--;
      } else {
        if (i <= n - 1 && s[i + 1] == "AC") {
          ans += 'C';
          c++;
          b--;
        } else if (i <= n - 1 && s[i + 1] == "AB") {
          ans += 'B';
          b++;
          c--;
        } else {
          ans += 'B';
          b++;
          c--;
        }
      }
    }
  }
  puts("Yes");
  rep(i, ans.size()) cout << ans[i] << endl;
  return 0;
}


Error: 0

Fixed submission:

#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (n); i++)
#define all(x) begin(x), end(x)
using namespace std;
typedef long long ll;
typedef pair<int, int> P;

int fab, fbc, fcd;
int main() {
  int n;
  cin >> n;
  ll a, b, c;
  cin >> a >> b >> c;

  if (a + b + c == 0) {
    puts("No");
    return 0;
  }
  vector<string> s(n);
  rep(i, n) cin >> s[i];
  string ans;
  rep(i, n) {
    if (s[i] == "AB") {
      if (a == 0 && b == 0) {
        puts("No");
        return 0;
      }
      if (a < b) {
        ans += 'A';
        a++;
        b--;
      } else if (a > b) {
        ans += 'B';
        b++;
        a--;
      } else {
        if (i <= n - 1 && s[i - 1] == "AC") {
          ans += 'A';
          a++;
          b--;
        } else if (i <= n - 1 && s[i - 1] == "BC") {
          ans += 'B';
          b++;
          a--;
        } else {
          ans += 'B';
          b++;
          a--;
        }
      }
    }
    if (s[i] == "AC") {
      if (a == 0 && c == 0) {
        puts("No");
        return 0;
      }
      if (a < c) {
        ans += 'A';
        a++;
        c--;
      } else if (a > c) {
        ans += 'C';
        c++;
        a--;
      } else {
        if (i <= n - 1 && s[i - 1] == "AB") {
          ans += 'A';
          a++;
          c--;
        } else if (i <= n - 1 && s[i - 1] == "BC") {
          ans += 'C';
          c++;
          a--;
        } else {
          ans += 'C';
          c++;
          a--;
        }
      }
    }
    if (s[i] == "BC") {
      if (c == 0 && b == 0) {
        puts("No");
        return 0;
      }
      if (c < b) {
        ans += 'C';
        c++;
        b--;
      } else if (c > b) {
        ans += 'B';
        b++;
        c--;
      } else {
        if (i <= n - 1 && s[i - 1] == "AC") {
          ans += 'C';
          c++;
          b--;
        } else if (i <= n - 1 && s[i - 1] == "AB") {
          ans += 'B';
          b++;
          c--;
        } else {
          ans += 'B';
          b++;
          c--;
        }
      }
    }
  }
  puts("Yes");
  rep(i, ans.size()) cout << ans[i] << endl;
  return 0;
}