func_code_string: #include <bits/stdc++.h>   using namespace std;   constexpr int kN = int(2E5 + 10), kInf = int(1E9 + 10), kC = int(1E6 + 10);   struct seg_tree {     long long int val[kN << 2], flag[kN << 2];     void init() {       memset(val, 0, sizeof(val));       memset(flag, 0, sizeof(flag));       return;     }     void addtag(int n, long long int x) {       flag[n] += x;       val[n] += x;     }     void push(int n) {       if (flag[n]) {         addtag(n << 1, flag[n]);         addtag(n << 1 | 1, flag[n]);         flag[n] = 0;       }       return;     }     void pull(int n) {       val[n] = max(val[n << 1], val[n << 1 | 1]);       return;     }     void fix(int n, int l, int r, int L, int R, long long int x) {       if (L <= l && r <= R)         addtag(n, x);       else if (!(l > R || L > r)) {         int mid = (l + r) >> 1;         push(n);         fix(n << 1, l, mid, L, R, x);         fix(n << 1 | 1, mid + 1, r, L, R, x);         pull(n);       }       return;     }   };   pair<int, int> wep[kN], eqi[kN];   pair<pair<int, int>, int> mon[kN];   int pos[kC];   seg_tree sg;   int main() {     int n, m, p, now = 1;     long long int ans;     scanf( %d%d%d , &n, &m, &p);     for (int i = 1; i <= n; i++) scanf( %d%d , &wep[i].first, &wep[i].second);     for (int i = 1; i <= m; i++) scanf( %d%d , &eqi[i].first, &eqi[i].second);     for (int i = 1; i <= p; i++)       scanf( %d%d%d , &mon[i].first.first, &mon[i].first.second, &mon[i].second);     sort(wep + 1, wep + n + 1);     sort(eqi + 1, eqi + m + 1);     sort(mon + 1, mon + p + 1);     sg.init();     for (int i = 1; i <= m; i++) sg.fix(1, 1, m, i, i, -eqi[i].second);     for (int i = 0; i < kC; i++) {       while (now <= m) {         if (eqi[now].first <= i)           now++;         else           break;       }       pos[i] = now;     }     ans = -wep[1].second - eqi[1].second;     now = 1;     for (int i = 1; i <= n; i++) {       while (now <= p) {         if (mon[now].first.first < wep[i].first) {           if (pos[mon[now].first.second] <= m)             sg.fix(1, 1, m, pos[mon[now].first.second], m, mon[now].second);           now++;         } else           break;       }       ans = max(ans, sg.val[1] - wep[i].second);     }     printf( %lld n , ans);   }   