Problem p03767 (C++)

Buggy submission (status: Runtime Error):
#include <bits/stdc++.h>
using namespace std;
namespace my_header {
#define pb push_back
#define mp make_pair
#define pir pair<int, int>
#define vec vector<int>
#define pc putchar
#define clr(t) memset(t, 0, sizeof t)
#define pse(t, v) memset(t, v, sizeof t)
#define bl puts("")
#define wn(x) wr(x), bl
#define ws(x) wr(x), pc(' ')
const int INF = 0x3f3f3f3f;
typedef long long LL;
typedef double DB;
inline char gchar() {
  char ret = getchar();
  for (; (ret == '\n' || ret == '\r' || ret == ' ') && ret != EOF;
       ret = getchar())
    ;
  return ret;
}
template <class T> inline void fr(T &ret, char c = ' ', int flg = 1) {
  for (c = getchar(); (c < '0' || '9' < c) && c != '-'; c = getchar())
    ;
  if (c == '-') {
    flg = -1;
    c = getchar();
  }
  for (ret = 0; '0' <= c && c <= '9'; c = getchar())
    ret = ret * 10 + c - '0';
  ret = ret * flg;
}
inline int fr() {
  int t;
  fr(t);
  return t;
}
template <class T> inline void fr(T &a, T &b) { fr(a), fr(b); }
template <class T> inline void fr(T &a, T &b, T &c) { fr(a), fr(b), fr(c); }
template <class T> inline char wr(T a, int b = 10, bool p = 1) {
  return a < 0
         ? pc('-'),
         wr(-a, b, 0)
         : (a == 0 ? (p ? pc('0') : p) : (wr(a / b, b, 0), pc('0' + a % b)));
}
template <class T> inline void wt(T a) { wn(a); }
template <class T> inline void wt(T a, T b) { ws(a), wn(b); }
template <class T> inline void wt(T a, T b, T c) { ws(a), ws(b), wn(c); }
template <class T> inline void wt(T a, T b, T c, T d) {
  ws(a), ws(b), ws(c), wn(d);
}
template <class T> inline T gcd(T a, T b) { return b == 0 ? a : gcd(b, a % b); }
template <class T> inline T fpw(T b, T i, T _m, T r = 1) {
  for (; i; i >>= 1, b = b * b % _m)
    if (i & 1)
      r = r * b % _m;
  return r;
}
}; // namespace my_header
using namespace my_header;

int a[111111];

int main() {
#ifdef lol
  freopen("A.in", "r", stdin);
  freopen("A.out", "w", stdout);
#endif
  int n;
  n = fr() * 3;
  for (int i = 1; i <= n; ++i)
    a[i] = fr();
  sort(a + 1, a + n + 1);
  reverse(a + 1, a + n + 1);
  long long ans = 0;
  for (int i = 2; i <= 2 * (n / 3); i += 2) {
    ans += a[i];
  }
  wt(ans);

  return 0;
}

Fixed submission:
#include <bits/stdc++.h>
using namespace std;
namespace my_header {
#define pb push_back
#define mp make_pair
#define pir pair<int, int>
#define vec vector<int>
#define pc putchar
#define clr(t) memset(t, 0, sizeof t)
#define pse(t, v) memset(t, v, sizeof t)
#define bl puts("")
#define wn(x) wr(x), bl
#define ws(x) wr(x), pc(' ')
const int INF = 0x3f3f3f3f;
typedef long long LL;
typedef double DB;
inline char gchar() {
  char ret = getchar();
  for (; (ret == '\n' || ret == '\r' || ret == ' ') && ret != EOF;
       ret = getchar())
    ;
  return ret;
}
template <class T> inline void fr(T &ret, char c = ' ', int flg = 1) {
  for (c = getchar(); (c < '0' || '9' < c) && c != '-'; c = getchar())
    ;
  if (c == '-') {
    flg = -1;
    c = getchar();
  }
  for (ret = 0; '0' <= c && c <= '9'; c = getchar())
    ret = ret * 10 + c - '0';
  ret = ret * flg;
}
inline int fr() {
  int t;
  fr(t);
  return t;
}
template <class T> inline void fr(T &a, T &b) { fr(a), fr(b); }
template <class T> inline void fr(T &a, T &b, T &c) { fr(a), fr(b), fr(c); }
template <class T> inline char wr(T a, int b = 10, bool p = 1) {
  return a < 0
         ? pc('-'),
         wr(-a, b, 0)
         : (a == 0 ? (p ? pc('0') : p) : (wr(a / b, b, 0), pc('0' + a % b)));
}
template <class T> inline void wt(T a) { wn(a); }
template <class T> inline void wt(T a, T b) { ws(a), wn(b); }
template <class T> inline void wt(T a, T b, T c) { ws(a), ws(b), wn(c); }
template <class T> inline void wt(T a, T b, T c, T d) {
  ws(a), ws(b), ws(c), wn(d);
}
template <class T> inline T gcd(T a, T b) { return b == 0 ? a : gcd(b, a % b); }
template <class T> inline T fpw(T b, T i, T _m, T r = 1) {
  for (; i; i >>= 1, b = b * b % _m)
    if (i & 1)
      r = r * b % _m;
  return r;
}
}; // namespace my_header
using namespace my_header;

int a[1111111];

int main() {
#ifdef lol
  freopen("A.in", "r", stdin);
  freopen("A.out", "w", stdout);
#endif
  int n;
  n = fr() * 3;
  for (int i = 1; i <= n; ++i)
    a[i] = fr();
  sort(a + 1, a + n + 1);
  reverse(a + 1, a + n + 1);
  long long ans = 0;
  for (int i = 2; i <= 2 * (n / 3); i += 2) {
    ans += a[i];
  }
  wt(ans);

  return 0;
}