#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
const ll inf=2e18+5;
struct X{
	ll tree=-inf,lazy=0;
	X* lef=NULL;
	X* rig=NULL;
};
struct Seg{
	ll n,shift=0;
	X root;
	void init(ll N){
		n=N;
	}
	void push(X &node,ll left,ll right){
		if(node.lazy==0)return;
		node.tree+=node.lazy;
		if(left!=right){
			if(!node.lef)node.lef=new X;
			node.lef->lazy+=node.lazy;
			if(!node.rig)node.rig=new X;
			node.rig->lazy+=node.lazy;
		}
		node.lazy=0;
	}
	ll l,r,x;
	void up(X &node,ll left=-inf,ll right=-inf){
		if(right==-inf){
			left=-n;
			right=n;
		}
		if(left>=l&&right<=r){
			node.lazy+=x;
			push(node,left,right);
			return;
		}
		push(node,left,right);
		if(left>r||right<l)return;
		ll mid=(left+right)>>1;
		if(!node.lef)node.lef=new X;
		up(*node.lef,left,mid);
		if(!node.rig)node.rig=new X;
		up(*node.rig,mid+1,right);
		node.tree=max(node.lef->tree,node.rig->tree);
	}
	void update(ll left,ll right,ll val){
		l=left-shift;r=right-shift;x=val;
		l=max(l,-n);
		r=min(r,n);
		up(root);
	}
	ll qu(X &node,ll left=-inf,ll right=-inf){
		if(right==-inf){
			left=-n;
			right=n;
		}
		if(left>r||right<l)return -inf;
		push(node,left,right);
		if(left>=l&&right<=r)return node.tree;
		ll mid=(left+right)>>1;
		if(!node.lef)node.lef=new X;
		if(!node.rig)node.rig=new X;
		return max(qu(*node.lef,left,mid),qu(*node.rig,mid+1,right));
	}
	ll query(ll left,ll right){
		l=left-shift;r=right-shift;
		l=max(l,-n);
		r=min(r,n);
		return qu(root);
	}
};
int n;
ll ans=0;
Seg seg;
const ll lim=1e15;
int main(){
	ios_base::sync_with_stdio(false);cin.tie(NULL);
	seg.init(lim);
	cin>>n;
	for(int i=0;i<n;i++){
		ll x,g,d;cin>>x>>g>>d;
		ans=max(ans,max(0ll,seg.query(x-d,lim))+g);
		seg.update(x,x,max(0ll,-seg.query(x,x)));
		seg.update(-lim,lim,g);
		seg.shift+=d;
	}
	cout<<ans;
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |