#include using namespace std; typedef long long ll; typedef pair< int ,ll> P; #define MAX_N 200005 vector X; int N,D; int a[MAX_N]; ll b[MAX_N]; P d[MAX_N]; ll INF = (1LL<<50); int tree[(1<<19)]; int getMax(int a,int b,int k=0,int l=0,int r=(1<<18)){ if(b<=l || r<=a)return -INF; if(a<=l && b<=r)return tree[k]; int m=(l+r)/2; return max( getMax(a,b,k*2+1,l,m) , getMax(a,b,k*2+2,m,r) ); } void update(int i,int x){ i+=(1<<18)-1; tree[i]=x; while(i){ i=(i-1)/2; tree[i]=max(tree[i*2+1],tree[i*2+2]); } } ll getSum(int l,int r){ return b[r]-b[l]; } P solve(){ fill(d,d+MAX_N, P( 1e9 + 7 ,INF) ); d[0]=P(0,0); for(int i=0;i