Problem p02727 (C++)

Buggy submission (status: Runtime Error):
#include <algorithm> // min, max, swap, sort, reverse, lower_bound, upper_bound
#include <bitset>    // bitset
#include <cctype>    // isupper, islower, isdigit, toupper, tolower
#include <cstdint>   // int64_t, int*_t
#include <cstdio>    // printf
#include <deque>     // deque
#include <iostream>  // cout, endl, cin
#include <map>       // map
#include <math.h>
#include <queue>         // queue, priority_queue
#include <set>           // set
#include <stack>         // stack
#include <string>        // string, to_string, stoi
#include <tuple>         // tuple, make_tuple
#include <unordered_map> // unordered_map
#include <unordered_set> // unordered_set
#include <utility>       // pair, make_pair
#include <vector>        // vector
using namespace std;
#define int long long

signed main() {
  cin.tie(nullptr);
  ios::sync_with_stdio(false);

  int x, y, a, b, c;
  cin >> x >> y >> a >> b >> c;

  vector<int> p(a), q(b), r(c);
  for (int i = 0; i < a; i++)
    cin >> p.at(i);
  for (int i = 0; i < b; i++)
    cin >> q.at(i);
  for (int i = 0; i < c; i++)
    cin >> r.at(i);

  sort(p.begin(), p.end(), greater<int>());
  sort(q.begin(), q.end(), greater<int>());
  sort(r.begin(), r.end(), greater<int>());

  vector<int> all(x + y);
  for (int i = 0; i < x; i++) {
    all.at(i) = p.at(i);
  }
  for (int i = 0; i < y; i++) {
    all.at(i + x) = q.at(i);
  }

  sort(all.begin(), all.end());

  for (int i = 0; i < c; i++) {
    if (all.at(i) < r.at(i))
      all.at(i) = r.at(i);
  }

  int ans = 0;
  for (int i = 0; i < x + y; i++)
    ans += all.at(i);

  cout << ans << endl;
}


Fixed submission:
#include <algorithm> // min, max, swap, sort, reverse, lower_bound, upper_bound
#include <bitset>    // bitset
#include <cctype>    // isupper, islower, isdigit, toupper, tolower
#include <cstdint>   // int64_t, int*_t
#include <cstdio>    // printf
#include <deque>     // deque
#include <iostream>  // cout, endl, cin
#include <map>       // map
#include <math.h>
#include <queue>         // queue, priority_queue
#include <set>           // set
#include <stack>         // stack
#include <string>        // string, to_string, stoi
#include <tuple>         // tuple, make_tuple
#include <unordered_map> // unordered_map
#include <unordered_set> // unordered_set
#include <utility>       // pair, make_pair
#include <vector>        // vector
using namespace std;
#define int long long

signed main() {
  cin.tie(nullptr);
  ios::sync_with_stdio(false);

  int x, y, a, b, c;
  cin >> x >> y >> a >> b >> c;

  vector<int> p(a), q(b), r(c);
  for (int i = 0; i < a; i++)
    cin >> p.at(i);
  for (int i = 0; i < b; i++)
    cin >> q.at(i);
  for (int i = 0; i < c; i++)
    cin >> r.at(i);

  sort(p.begin(), p.end(), greater<int>());
  sort(q.begin(), q.end(), greater<int>());
  sort(r.begin(), r.end(), greater<int>());

  vector<int> all(x + y);
  for (int i = 0; i < x; i++) {
    all.at(i) = p.at(i);
  }
  for (int i = 0; i < y; i++) {
    all.at(i + x) = q.at(i);
  }

  sort(all.begin(), all.end());

  for (int i = 0; i < c; i++) {

    if (i >= x + y)
      break;

    if (all.at(i) < r.at(i))
      all.at(i) = r.at(i);
  }

  int ans = 0;
  for (int i = 0; i < x + y; i++)
    ans += all.at(i);

  cout << ans << endl;
}