想问一下各位大佬这样子写行吗:
inline int Change(int k,int pos)
{
Segment_Tree t;
t.sum=s[k<<1].sum+s[k<<1|1].sum;
t.left=Max(s[k<<1].left,s[k<<1].sum+s[k<<1|1].left);
t.right=Max(s[k<<1|1].right,s[k<<1|1].sum+s[k<<1].right);
t.cal=Max(s[k<<1].sum,Max(s[k<<1|1].sum,s[k<<1].right+s[k<<1|1].left));
if(pos==0) s[k]=t;
else return t.cal;
}
inline void Update(int k,int l,int r,int p,int v)
{
if(l==r){
if(l!=p) return ;
s[k].sum=v;
s[k].cal=v;
s[k].left=v;
s[k].right=v;
return ;
}
int mid=(l+r)>>1;
Update(k<<1,l,mid,p,v);
Update(k<<1|1,mid+1,r,p,v);
Change(k,0);
}
inline int Query(int k,int l,int r,int x,int y)
{
if(x>r||y<l) return 0;
if(x<=l&&r<=y) return s[k].cal;
int mid=(l+r)>>1;
return Change(k,1);
}