#include <iostream>
#include <vector>
#include <array>
#include <map>
#define ll long long
using namespace std;
vector <array<ll, 2>> V[1000001];
map <ll, ll> diff;
ll n, m, psA[1000001], psB[1000001], A[1000001], B[1000001], P[1000001], Q[1000001];
void upd(ll x, ll y) {
  diff[x] += y;
  if (diff[x] < 0) {
    ll z = -diff[x], k;
    diff[x] = 0;
    auto it = next(diff.find(x));
    while (z && it != diff.end()) {
      auto nx = next(it);
      k = min(z, it->second);
      ll u = it->first;
      z -= k;
      diff[u] -= k;
      if (diff[u] == 0) diff.erase(it);
      else break;
      it = nx;
    }
  }
}
int main() {
  cin.tie(0);
  ios::sync_with_stdio(0);
  cin >> n >> m;
  for (int i=0; i<n; ++i) {
    cin >> psA[i] >> A[i] >> P[i];
    if (i) psA[i] += psA[i-1];
    A[i] -= psA[i];
  }
  for (int i=0; i<m; ++i) {
    cin >> psB[i] >> B[i] >> Q[i];
    if (i) psB[i] += psB[i-1];
    B[i] -= psB[i];
  }
  for (int i=0; i<n; ++i) {
    if (A[i] < 0) continue;
    auto it = lower_bound(psB, psB+m, A[i]+1);
    A[i] = it-psB;
  }
  for (int i=0; i<m; ++i) {
    if (B[i] < 0) continue;
    auto it = lower_bound(psA, psA+n, B[i]+1);
    B[i] = it-psA;
    V[B[i]].push_back({i+1, Q[i]});
  }
  for (int i=0; i<=max(n, m); ++i) {
    bool ok = 0;
    for (auto [x, y] : V[i]) {
      if (x >= A[i-1]+1) {
        ok = 1;
        diff[0] += P[i-1];
        upd(A[i-1]+1, -P[i-1]);
      }
      upd(x, y);
    }
    if (!ok && 1 <= i && i <= n && A[i-1] >= 0) {
      diff[0] += P[i-1];
      upd(A[i-1]+1, -P[i-1]);
    }
  }
  ll f = 0;
  for (int i=0; i<=max(n, m); ++i) f += diff[i];
  cout << f << '\n';
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |