<Problem>
https://oj.vnoi.info/problem/voi22_sseq
#include <iostream>
#include <cmath>
#include <vector>
using namespace std;
const int N = 1e5, LIM = 1e6;
int n, l[N], r[N], w[N];
vector<int> arr[2 * LIM + 1];
long long st[LIM * 4], lz[LIM * 4];
void update(int id, int l, int r, int u, int v, int x) {
if (v < l || r < u) return;
if (u <= l && r <= v) {
st[id] += x;
lz[id] += x;
return;
}
int mid = (l + r) / 2;
update(id * 2, l, mid, u, v, x);
update(id * 2 + 1, mid + 1, r, u, v, x);
st[id] = max(st[id * 2], st[id * 2 + 1]) + lz[id];
}
int main() {
if (fopen("SSEQ.INP", "r")) {
freopen("SSEQ.INP", "r", stdin);
freopen("SSEQ.OUT", "w", stdout);
}
cin >> n;
for (int i = 0; i < n; i++) {
cin >> l[i] >> r[i] >> w[i];
arr[l[i]].push_back(i);
update(1, 1, LIM, r[i], LIM, w[i]);
}
long long ans = -9223372036854775807;
for (int a = 1; a <= LIM; a++) {
for (int i = 0; i < arr[a].size(); i++) {
update(1, 1, LIM, r[arr[a].at(i)], LIM, -w[arr[a].at(i)]);
}
ans = max(ans, st[1]);
}
cout << ans << endl;
return 0;
}