#include #include // 平方分割解 // O(MN^.5) // 2sなら間に合うかな~ using namespace std; using ll = long long; const ll LINF = 1e18; const int N = 1e5; const int rN = 317; ll data[rN*rN]; ll rdata[rN]; ll all[rN]; // [a, b] void add(int a, int b, int x) { int ag = (a + rN - 1) / rN; int bg = (b - rN + 1 + rN) / rN - 1; // 0の方へ丸まるので for(int i=ag;i<=bg;i++) { all[i] += x; } if(ag > bg) { for(int i=a;i<=b;i++) { data[i] += x; rdata[i/rN] = max(rdata[i/rN], data[i]); } return; } for(int i=a;i> n; n--; int ng = (n + rN) / rN; for(int i=0;i> data[i], data[i] += (n - i) * 3; for(int i=n;i> q; for(int i=0;i> a >> b >> x; add(a-1, b-1, x); cout << getMax(n) << endl; } }