Problem p03033 (C++)

Buggy submission (status: Runtime Error):
#include <bits/stdc++.h>
#include <sys/types.h>
#include <unistd.h>

#define _overload(_1, _2, _3, name, ...) name
#define _rep(i, n) _range(i, 0, n)
#define _range(i, a, b) for (int i = int(a); i < int(b); ++i)
#define rep(...) _overload(__VA_ARGS__, _range, _rep, )(__VA_ARGS__)

#define _rrep(i, n) _rrange(i, n, 0)
#define _rrange(i, a, b) for (int i = int(a) - 1; i >= int(b); --i)
#define rrep(...) _overload(__VA_ARGS__, _rrange, _rrep, )(__VA_ARGS__)

#define _all(arg) begin(arg), end(arg)
#define uniq(arg) sort(_all(arg)), (arg).erase(unique(_all(arg)), end(arg))
#define getidx(ary, key) lower_bound(_all(ary), key) - begin(ary)
#define clr(a, b) memset((a), (b), sizeof(a))
#define bit(n) (1LL << (n))
#define popcount(n) (__builtin_popcountll(n))

using namespace std;

template <class T> bool chmax(T &a, const T &b) {
  return (a < b) ? (a = b, 1) : 0;
}
template <class T> bool chmin(T &a, const T &b) {
  return (b < a) ? (a = b, 1) : 0;
}

using ll = long long;
using R = long double;
const R EPS = 1e-9L; // [-1000,1000]->EPS=1e-8 [-10000,10000]->EPS=1e-7
inline int sgn(const R &r) { return (r > EPS) - (r < -EPS); }
inline R sq(R x) { return sqrt(max(x, 0.0L)); }

template <typename T> vector<T> make_vector(size_t sz) { return vector<T>(sz); }

template <typename T, typename... Ts> auto make_vector(size_t sz, Ts... ts) {
  return vector<decltype(make_vector<T>(ts...))>(sz, make_vector<T>(ts...));
}

template <typename T, typename U, typename... V>
typename enable_if<is_same<T, U>::value != 0>::type fill_value(U &u,
                                                               const V... v) {
  u = U(v...);
}

template <typename T, typename U, typename... V>
typename enable_if<is_same<T, U>::value == 0>::type fill_value(U &u,
                                                               const V... v) {
  for (auto &e : u) {
    fill_value<T>(e, v...);
  }
}

const int dx[8] = {1, 0, -1, 0, 1, -1, -1, 1};
const int dy[8] = {0, 1, 0, -1, 1, 1, -1, -1};

const pid_t pid = getpid();
// Problem Specific Parameter:

using pii = pair<int, int>;
vector<pii> ary;
set<int> block;

const int limit = 200010;
int s[limit], t[limit], x[limit], e[limit];

int main(void) {
  int n, q;
  scanf("%d %d", &n, &q);
  cin >> n >> q;
  rep(i, n) {
    scanf("%d %d %d", s + i, t + i, x + i);
    s[i] -= x[i];
    t[i] -= x[i];
    ary.push_back(pii(s[i], i));
    ary.push_back(pii(t[i], i));
  }

  rep(i, q) scanf("%d", e + i);

  sort(begin(ary), end(ary));
  const int m = ary.size();
  int pos = 0;

  rep(i, q) {
    while (pos < m and ary[pos].first <= e[i]) {
      const int idx = ary[pos].second;
      if (block.find(x[idx]) != end(block))
        block.erase(x[idx]);
      else
        block.insert(x[idx]);
      pos++;
    }
    if (block.empty())
      puts("-1");
    else
      printf("%d\n", *begin(block));
  }

  return 0;
}

Fixed submission:
#include <bits/stdc++.h>
#include <sys/types.h>
#include <unistd.h>

#define _overload(_1, _2, _3, name, ...) name
#define _rep(i, n) _range(i, 0, n)
#define _range(i, a, b) for (int i = int(a); i < int(b); ++i)
#define rep(...) _overload(__VA_ARGS__, _range, _rep, )(__VA_ARGS__)

#define _rrep(i, n) _rrange(i, n, 0)
#define _rrange(i, a, b) for (int i = int(a) - 1; i >= int(b); --i)
#define rrep(...) _overload(__VA_ARGS__, _rrange, _rrep, )(__VA_ARGS__)

#define _all(arg) begin(arg), end(arg)
#define uniq(arg) sort(_all(arg)), (arg).erase(unique(_all(arg)), end(arg))
#define getidx(ary, key) lower_bound(_all(ary), key) - begin(ary)
#define clr(a, b) memset((a), (b), sizeof(a))
#define bit(n) (1LL << (n))
#define popcount(n) (__builtin_popcountll(n))

using namespace std;

template <class T> bool chmax(T &a, const T &b) {
  return (a < b) ? (a = b, 1) : 0;
}
template <class T> bool chmin(T &a, const T &b) {
  return (b < a) ? (a = b, 1) : 0;
}

using ll = long long;
using R = long double;
const R EPS = 1e-9L; // [-1000,1000]->EPS=1e-8 [-10000,10000]->EPS=1e-7
inline int sgn(const R &r) { return (r > EPS) - (r < -EPS); }
inline R sq(R x) { return sqrt(max(x, 0.0L)); }

template <typename T> vector<T> make_vector(size_t sz) { return vector<T>(sz); }

template <typename T, typename... Ts> auto make_vector(size_t sz, Ts... ts) {
  return vector<decltype(make_vector<T>(ts...))>(sz, make_vector<T>(ts...));
}

template <typename T, typename U, typename... V>
typename enable_if<is_same<T, U>::value != 0>::type fill_value(U &u,
                                                               const V... v) {
  u = U(v...);
}

template <typename T, typename U, typename... V>
typename enable_if<is_same<T, U>::value == 0>::type fill_value(U &u,
                                                               const V... v) {
  for (auto &e : u) {
    fill_value<T>(e, v...);
  }
}

const int dx[8] = {1, 0, -1, 0, 1, -1, -1, 1};
const int dy[8] = {0, 1, 0, -1, 1, 1, -1, -1};

const pid_t pid = getpid();
// Problem Specific Parameter:

using pii = pair<int, int>;
vector<pii> ary;
set<int> block;

const int limit = 200010;
int s[limit], t[limit], x[limit], e[limit];

int main(void) {
  int n, q;
  scanf("%d %d", &n, &q);
  rep(i, n) {
    scanf("%d %d %d", s + i, t + i, x + i);
    s[i] -= x[i];
    t[i] -= x[i];
    ary.push_back(pii(s[i], i));
    ary.push_back(pii(t[i], i));
  }

  rep(i, q) scanf("%d", e + i);

  sort(begin(ary), end(ary));
  const int m = ary.size();
  int pos = 0;

  rep(i, q) {
    while (pos < m and ary[pos].first <= e[i]) {
      const int idx = ary[pos].second;
      if (block.find(x[idx]) != end(block))
        block.erase(x[idx]);
      else
        block.insert(x[idx]);
      pos++;
    }
    if (block.empty())
      puts("-1");
    else
      printf("%d\n", *begin(block));
  }

  return 0;
}