Problem p03033 (C++)

Buggy submission (status: Time Limit Exceeded):
#include <algorithm>
#include <array>
#include <bitset>
#include <cassert>
#include <cctype>
#include <chrono>
#include <cmath>
#include <complex>
#include <cstdint>
#include <deque>
#include <functional>
#include <iomanip>
#include <iostream>
#include <limits>
#include <map>
#include <memory>
#include <numeric>
#include <queue>
#include <random>
#include <set>
#include <stack>
#include <string>
#include <unordered_map>
#include <utility>
#include <vector>

#define rep(i, a, b) for (long long i = (a); (i) < (b); (i)++)
#define all(i) i.begin(), i.end()
#define debug(...)                                                             \
  std::cerr << "[" << #__VA_ARGS__ << "]:", debug_out(__VA_ARGS__)

void debug_out() { std::cerr << std::endl; }

template <typename Head, typename... Tail> void debug_out(Head h, Tail... t) {
  std::cerr << " " << h;
  debug_out(t...);
}

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

template <typename T>
std::ostream &operator<<(std::ostream &os, std::vector<T> vec) {
  for (int i = 0; i < vec.size(); i++)
    os << vec[i] << (i + 1 == vec.size() ? "" : " ");
  return os;
}

template <typename T1, typename T2> inline bool chmax(T1 &a, T2 b) {
  return a < b && (a = b, true);
}

template <typename T1, typename T2> inline bool chmin(T1 &a, T2 b) {
  return a > b && (a = b, true);
}

long long pow_mod(long long a, long long b, long long mod = -1) {
  if (b == 0)
    return 1;
  if ((a == 0) || (mod != -1 && (a + mod) % mod == 0))
    return 0;
  long long x = 1;
  while (b > 0) {
    if (b & 1)
      x = (mod != -1) ? (x * a) % mod : x * a;
    a = (mod != -1) ? (a * a) % mod : a * a;
    b >>= 1;
  }
  return x;
}

const long long MOD = 998244353;
// const long long MOD = 1e9 + 7;

using ll = long long;
using P = std::pair<long long, long long>;

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

  ll n, q;
  std::cin >> n >> q;

  using kozi = std::tuple<ll, ll, ll>;

  std::multiset<ll> set;
  std::vector<kozi> event;

  rep(i, 0, n) {
    ll s, t, x;
    std::cin >> s >> t >> x;
    event.emplace_back(s - x, 1, x);
    event.emplace_back(t - x, -1, x);
  }

  std::sort(all(event));

  ll now = 0;

  rep(i, 0, q) {
    ll d;
    std::cin >> d;
    while (now < 2 * n && std::get<0>(event[now]) <= d) {
      if (std::get<1>(event[now]) == 1) {
        set.insert(std::get<2>(event[now]));
      } else {
        auto itr = std::lower_bound(all(set), std::get<2>(event[now]));
        set.erase(itr);
      }
      now++;
    }
    if (set.empty())
      std::cout << -1 << "\n";
    else
      std::cout << *set.begin() << "\n";
  }

  return 0;
}


Fixed submission:
#include <algorithm>
#include <array>
#include <bitset>
#include <cassert>
#include <cctype>
#include <chrono>
#include <cmath>
#include <complex>
#include <cstdint>
#include <deque>
#include <functional>
#include <iomanip>
#include <iostream>
#include <limits>
#include <map>
#include <memory>
#include <numeric>
#include <queue>
#include <random>
#include <set>
#include <stack>
#include <string>
#include <unordered_map>
#include <utility>
#include <vector>

#define rep(i, a, b) for (long long i = (a); (i) < (b); (i)++)
#define all(i) i.begin(), i.end()
#define debug(...)                                                             \
  std::cerr << "[" << #__VA_ARGS__ << "]:", debug_out(__VA_ARGS__)

void debug_out() { std::cerr << std::endl; }

template <typename Head, typename... Tail> void debug_out(Head h, Tail... t) {
  std::cerr << " " << h;
  debug_out(t...);
}

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

template <typename T>
std::ostream &operator<<(std::ostream &os, std::vector<T> vec) {
  for (int i = 0; i < vec.size(); i++)
    os << vec[i] << (i + 1 == vec.size() ? "" : " ");
  return os;
}

template <typename T1, typename T2> inline bool chmax(T1 &a, T2 b) {
  return a < b && (a = b, true);
}

template <typename T1, typename T2> inline bool chmin(T1 &a, T2 b) {
  return a > b && (a = b, true);
}

long long pow_mod(long long a, long long b, long long mod = -1) {
  if (b == 0)
    return 1;
  if ((a == 0) || (mod != -1 && (a + mod) % mod == 0))
    return 0;
  long long x = 1;
  while (b > 0) {
    if (b & 1)
      x = (mod != -1) ? (x * a) % mod : x * a;
    a = (mod != -1) ? (a * a) % mod : a * a;
    b >>= 1;
  }
  return x;
}

const long long MOD = 998244353;
// const long long MOD = 1e9 + 7;

using ll = long long;
using P = std::pair<long long, long long>;

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

  ll n, q;
  std::cin >> n >> q;

  using kozi = std::tuple<ll, ll, ll>;

  std::multiset<ll> set;
  std::vector<kozi> event;

  rep(i, 0, n) {
    ll s, t, x;
    std::cin >> s >> t >> x;
    event.emplace_back(s - x, 1, x);
    event.emplace_back(t - x, -1, x);
  }

  std::sort(all(event));

  ll now = 0;

  rep(i, 0, q) {
    ll d;
    std::cin >> d;
    while (now < 2 * n && std::get<0>(event[now]) <= d) {
      if (std::get<1>(event[now]) == 1) {
        set.insert(std::get<2>(event[now]));
      } else {
        auto itr = set.lower_bound(std::get<2>(event[now]));
        set.erase(itr);
      }
      now++;
    }
    if (set.empty())
      std::cout << -1 << "\n";
    else
      std::cout << *set.begin() << "\n";
  }

  return 0;
}