Problem p02727 (C++)

Buggy submission (status: Runtime Error):
//                                       _____   ---===--   _____
//                             .    ''                              ``  -.
//                      .  '                                                  `
//                      .
//                   .'       _ _  _ ` .
//                 /  ' '                 ''    -- . `\
//                |                                      ` -. /\
//                 \ ______  -----   ____                       ` -. .'|_
//                  \\mmmNNNNNNNNNNNNmm==____`   - . _                `.`  -
//                  .......  - '  . ' |
//                   |"""""""""""""MNNNNNNNNNNNNNNNm==___ `  -  . _
//                   \   .---====-- .. '     |
//                   -''''''''''' `   -  __   '"""MMNNNNNNNNNNNmm===______ "| __
//                   | | NN) (
//                 / ::::::::::::::::::::::::::`  -  .  __
//                 '"""MNNNNNNNNNNNNN\   (NNN*  | |__...J
//               /  ::::::::::::::::::::::::::::::::::::::::::` -  .  __ '"""\
//               . ''|      ` .
//             /    :::::::::::::::::::::::::::::::::::::::::::::::::::  '''' /
//             -- ' /  |::\  \ ,)   `.
//            /    ::'   ':::::::::/:::::::::::::::::::::''::  :::   ::::::::/
//            ( /   |:::\   "" _. ''
//           /    ::'   :/:'  ::  /    :::::    :::     :. .::\:::::::::::::< _
//           /::::::\  /\
//          / .:::::::::/::...:. / :::::....:::::::::::::::\:::::::::::::::\:`:-
//          /::::\::::`:N\
//         /
//         ::/:::::::/::::::::/::::::::::::::::::::::::::::::::\:::::::\::::::|::::|::::::|::::::N\
//        | ::|:::::::|:::::::/
//        |:::::::::/|:::::::::/:::::\::::::\:::::::\:::::|::::|:::::::|::::::N|
//        | ::|:::::::|::::::/  |:|::::::| |::::::::|
//        |:::::\::::::\:::::::|:::/:::::]::::::::::::::N\ | ::|:::::::|:::::/
//        |:|::::::| |::::::::| \:::::\\:::::\::::::|::/:::::/:::::::/:::::::NN|
//        | ::|:::::::|::::|     \:\:::::|
//        \::::::::\ --\::::\_\::::|:::::|:/:::::/:::::::/::::::::NN|
//         |::|:::::::|::::|-'""""\:\:::|
//         \::\-::::\   `-|\:\  `-:|:::::|:::::::::::::/:::::|:::::N|
//         |::|::::\::\::\::|  ___ \ `-_:\     "-\ `-__  --'''___;_
//         |::::|:::::::::.m'\:::::::|::::N|
//          \::\::::|:::\:\--\___  `- ` '"        ""   ggmm@@@@@@@@@m
//          ):::/:::::::. @@XXL|:::::::\:::N|
//           \::\::::\:::\mN**@@@@@mm \    |::TT:::/::::/N:::::/
//           @@@@XXL|::::::::\::NN\
//            \N:NN\:::-.::\  |::TT::|                  ` . _\:::::/
//            /::7NN:::/::|@@@@XXL|:::::::::\::NN\
//             \NNN\\'n-:`N\ - \::::/                             / /
//             /NN::::/:::|@@@XXL/:::::::::::\::NN\
//              `"NN\ `-NN''\                                    _7 "
//              \:::::\::|LXXXLL/:::::::::::::`.NNN\
//                `-NN\ \NNNN\                                          |\::::\:|<LLLL/\:::::::::::::\::`NN\
//                    ` '|NNNN\          '                             /NNN`m-
//                    >NN|::\NN\:::::\:::::::\:::::`.
//                       |NNNNNN\                                   .i'/:::::::/NN|:::\NN\::::::\:::::::\::::::`;-.
//                      |NNNNNN/:/`.          .__.              . '
//                      |/::/::::/NNN|:::::\N\:::::::`.:::::`Nn::::::::`m-.
//                     /NNNNN/:n/:::|` .                    . '
//                     /::y::::/NN::N|:::\::\|:::::::::`.:::::"-.::::::::::`m.
//                    /NNN.':://::::|NNNN/` .          . '
//                    /:::/:::/"""">NN\::::\:::`.:::::.:::::::::::`-.:::::::::)
//                  /."':::.'N::::::|NNN/::\::__`'''\              /::::::::|@@@@||NN\::::::::::`.::::`
//                  .::::::::::::`.-.::/
//              -'::::::m':/:::::::/NN/:::::|ffffrrrrmmmmmmmm@@@@@|:::::::\N|@@@|
//              \:\N\::::::::::::`.:::::`.::::::::::::::::`..
//           /::::::m'::.':::::/::/"':::::/
//           /\fffffffffffff@@@@@@@|::::::::\|@@@|
//           N`.\NN`.::::::::::::`.:::::`-.::::::::.:::::::` .
//           \::::mT:':::::::/:.':::::::,'/MMM\N.   ffffffff @@|:::::::::\@@/.
//           NNNNNNNNN`m.:::::::::"=::::::"Nn:::::::`.::::::::`.
//          -':':::::::::::.':/:::::::://MMM. ""*fffffffffffffffff@\:::::::::\"
//          gg`  -  . NNNN\`n.::::::".::::::"N:::::::"n::::::::|
//    .- ':::.:::::::.':.':::/::::::::/- ' Mng      """"""""""
//    `\::|::::::\M*",,,,,,,,,,,,` .\\N`.::::|:::::::|::::::::|:::::::/
// /':::::.'::::::.'::/::::n/::::::::|,,,,,,
// "**++g,,________,,,,,,mmm\::\:::::::\,,,,,,,,,,,,gnNN" `
// .N)::/::.:::|::::::|::N|:::.''
//|:::. '::::::n":::/":::N"
//\:\::::::|,,,,,,,,,,,,,**/NN/*******,,,,,,,,`.|`.:::::|,,,,,, gnN*."'
//\:.:::|::::\::::::\nN::/
//.|::::::::,n":::,":::,N    \:\:::::\,,,,,,,,,,,,,,/NN/,,,,,,,,,,,,,,,,,,|   `.
//|ggnN**"   /           |::::|::::::::::::\Nm:|
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef pair<int, int> P;

#define p_ary(ary, a, b)                                                       \
  do {                                                                         \
    cout << "[";                                                               \
    for (int count = (a); count < (b); ++count)                                \
      cout << ary[count] << ((b)-1 == count ? "" : ", ");                      \
    cout << "]\n";                                                             \
  } while (0)
#define p_map(map, it)                                                         \
  do {                                                                         \
    cout << "{";                                                               \
    for (auto(it) = map.begin();; ++(it)) {                                    \
      if ((it) == map.end()) {                                                 \
        cout << "}\n";                                                         \
        break;                                                                 \
      } else                                                                   \
        cout << "" << (it)->first << "=>" << (it)->second << ", ";             \
    }                                                                          \
  } while (0)

template <typename T1, typename T2>
ostream &operator<<(ostream &os, const pair<T1, T2> &a) {
  os << "(" << a.first << ", " << a.second << ")";
  return os;
}

const char newl = '\n';

int main() {
  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[i];
  for (int i = 0; i < b; ++i)
    cin >> q[i];
  for (int i = 0; i < c; ++i)
    cin >> r[i];
  sort(p.begin(), p.end());
  sort(q.begin(), q.end());
  sort(r.begin(), r.end());
  reverse(p.begin(), p.end());
  reverse(q.begin(), q.end());
  reverse(r.begin(), r.end());
  p.push_back(0);
  q.push_back(0);
  int i = 0, j = 0, k = 0;
  ll ans = 0;
  while (x || y) {
    if (x && (k == c || (k < c && p[i] >= r[k]))) {
      ans += p[i++];
      x--;
    } else if (y && (k == c || (k < c && q[j] >= r[k]))) {
      ans += q[j++];
      y--;
    } else {
      ans += r[k++];
      (p[i + x] < q[j + y] ? x-- : y--);
    }
  }
  cout << ans << endl;
}

Fixed submission:
//                                       _____   ---===--   _____
//                             .    ''                              ``  -.
//                      .  '                                                  `
//                      .
//                   .'       _ _  _ ` .
//                 /  ' '                 ''    -- . `\
//                |                                      ` -. /\
//                 \ ______  -----   ____                       ` -. .'|_
//                  \\mmmNNNNNNNNNNNNmm==____`   - . _                `.`  -
//                  .......  - '  . ' |
//                   |"""""""""""""MNNNNNNNNNNNNNNNm==___ `  -  . _
//                   \   .---====-- .. '     |
//                   -''''''''''' `   -  __   '"""MMNNNNNNNNNNNmm===______ "| __
//                   | | NN) (
//                 / ::::::::::::::::::::::::::`  -  .  __
//                 '"""MNNNNNNNNNNNNN\   (NNN*  | |__...J
//               /  ::::::::::::::::::::::::::::::::::::::::::` -  .  __ '"""\
//               . ''|      ` .
//             /    :::::::::::::::::::::::::::::::::::::::::::::::::::  '''' /
//             -- ' /  |::\  \ ,)   `.
//            /    ::'   ':::::::::/:::::::::::::::::::::''::  :::   ::::::::/
//            ( /   |:::\   "" _. ''
//           /    ::'   :/:'  ::  /    :::::    :::     :. .::\:::::::::::::< _
//           /::::::\  /\
//          / .:::::::::/::...:. / :::::....:::::::::::::::\:::::::::::::::\:`:-
//          /::::\::::`:N\
//         /
//         ::/:::::::/::::::::/::::::::::::::::::::::::::::::::\:::::::\::::::|::::|::::::|::::::N\
//        | ::|:::::::|:::::::/
//        |:::::::::/|:::::::::/:::::\::::::\:::::::\:::::|::::|:::::::|::::::N|
//        | ::|:::::::|::::::/  |:|::::::| |::::::::|
//        |:::::\::::::\:::::::|:::/:::::]::::::::::::::N\ | ::|:::::::|:::::/
//        |:|::::::| |::::::::| \:::::\\:::::\::::::|::/:::::/:::::::/:::::::NN|
//        | ::|:::::::|::::|     \:\:::::|
//        \::::::::\ --\::::\_\::::|:::::|:/:::::/:::::::/::::::::NN|
//         |::|:::::::|::::|-'""""\:\:::|
//         \::\-::::\   `-|\:\  `-:|:::::|:::::::::::::/:::::|:::::N|
//         |::|::::\::\::\::|  ___ \ `-_:\     "-\ `-__  --'''___;_
//         |::::|:::::::::.m'\:::::::|::::N|
//          \::\::::|:::\:\--\___  `- ` '"        ""   ggmm@@@@@@@@@m
//          ):::/:::::::. @@XXL|:::::::\:::N|
//           \::\::::\:::\mN**@@@@@mm \    |::TT:::/::::/N:::::/
//           @@@@XXL|::::::::\::NN\
//            \N:NN\:::-.::\  |::TT::|                  ` . _\:::::/
//            /::7NN:::/::|@@@@XXL|:::::::::\::NN\
//             \NNN\\'n-:`N\ - \::::/                             / /
//             /NN::::/:::|@@@XXL/:::::::::::\::NN\
//              `"NN\ `-NN''\                                    _7 "
//              \:::::\::|LXXXLL/:::::::::::::`.NNN\
//                `-NN\ \NNNN\                                          |\::::\:|<LLLL/\:::::::::::::\::`NN\
//                    ` '|NNNN\          '                             /NNN`m-
//                    >NN|::\NN\:::::\:::::::\:::::`.
//                       |NNNNNN\                                   .i'/:::::::/NN|:::\NN\::::::\:::::::\::::::`;-.
//                      |NNNNNN/:/`.          .__.              . '
//                      |/::/::::/NNN|:::::\N\:::::::`.:::::`Nn::::::::`m-.
//                     /NNNNN/:n/:::|` .                    . '
//                     /::y::::/NN::N|:::\::\|:::::::::`.:::::"-.::::::::::`m.
//                    /NNN.':://::::|NNNN/` .          . '
//                    /:::/:::/"""">NN\::::\:::`.:::::.:::::::::::`-.:::::::::)
//                  /."':::.'N::::::|NNN/::\::__`'''\              /::::::::|@@@@||NN\::::::::::`.::::`
//                  .::::::::::::`.-.::/
//              -'::::::m':/:::::::/NN/:::::|ffffrrrrmmmmmmmm@@@@@|:::::::\N|@@@|
//              \:\N\::::::::::::`.:::::`.::::::::::::::::`..
//           /::::::m'::.':::::/::/"':::::/
//           /\fffffffffffff@@@@@@@|::::::::\|@@@|
//           N`.\NN`.::::::::::::`.:::::`-.::::::::.:::::::` .
//           \::::mT:':::::::/:.':::::::,'/MMM\N.   ffffffff @@|:::::::::\@@/.
//           NNNNNNNNN`m.:::::::::"=::::::"Nn:::::::`.::::::::`.
//          -':':::::::::::.':/:::::::://MMM. ""*fffffffffffffffff@\:::::::::\"
//          gg`  -  . NNNN\`n.::::::".::::::"N:::::::"n::::::::|
//    .- ':::.:::::::.':.':::/::::::::/- ' Mng      """"""""""
//    `\::|::::::\M*",,,,,,,,,,,,` .\\N`.::::|:::::::|::::::::|:::::::/
// /':::::.'::::::.'::/::::n/::::::::|,,,,,,
// "**++g,,________,,,,,,mmm\::\:::::::\,,,,,,,,,,,,gnNN" `
// .N)::/::.:::|::::::|::N|:::.''
//|:::. '::::::n":::/":::N"
//\:\::::::|,,,,,,,,,,,,,**/NN/*******,,,,,,,,`.|`.:::::|,,,,,, gnN*."'
//\:.:::|::::\::::::\nN::/
//.|::::::::,n":::,":::,N    \:\:::::\,,,,,,,,,,,,,,/NN/,,,,,,,,,,,,,,,,,,|   `.
//|ggnN**"   /           |::::|::::::::::::\Nm:|
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef pair<int, int> P;

#define p_ary(ary, a, b)                                                       \
  do {                                                                         \
    cout << "[";                                                               \
    for (int count = (a); count < (b); ++count)                                \
      cout << ary[count] << ((b)-1 == count ? "" : ", ");                      \
    cout << "]\n";                                                             \
  } while (0)
#define p_map(map, it)                                                         \
  do {                                                                         \
    cout << "{";                                                               \
    for (auto(it) = map.begin();; ++(it)) {                                    \
      if ((it) == map.end()) {                                                 \
        cout << "}\n";                                                         \
        break;                                                                 \
      } else                                                                   \
        cout << "" << (it)->first << "=>" << (it)->second << ", ";             \
    }                                                                          \
  } while (0)

template <typename T1, typename T2>
ostream &operator<<(ostream &os, const pair<T1, T2> &a) {
  os << "(" << a.first << ", " << a.second << ")";
  return os;
}

const char newl = '\n';

int main() {
  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[i];
  for (int i = 0; i < b; ++i)
    cin >> q[i];
  for (int i = 0; i < c; ++i)
    cin >> r[i];
  sort(p.begin(), p.end());
  sort(q.begin(), q.end());
  sort(r.begin(), r.end());
  reverse(p.begin(), p.end());
  reverse(q.begin(), q.end());
  reverse(r.begin(), r.end());
  p.push_back(0);
  q.push_back(0);
  int i = 0, j = 0, k = 0;
  ll ans = 0;
  while (x || y) {
    if (x && (k == c || (k < c && p[i] >= r[k]))) {
      ans += p[i++];
      x--;
    } else if (y && (k == c || (k < c && q[j] >= r[k]))) {
      ans += q[j++];
      y--;
    } else {
      ans += r[k++];
      if (x) {
        if (y)
          (p[i + x - 1] < q[j + y - 1] ? x-- : y--);
        else
          x--;
      } else
        y--;
    }
  }
  cout << ans << endl;
}