Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // a is array and seg is segment_tree array (it is segment_tree_for max_range)
- void build(int node,int i,int j)
- {
- if(i==j)
- {
- seg[node]=a[i];
- return ;
- }
- int mid = (i+j)/2;
- build(2*node+1,i,mid);
- build(2*node+2,mid+1,j);
- seg[node]=max(seg[2*node+1],seg[2*node+2]);
- }
- ll query(int node,int i,int j,int l,int r)
- {
- if(i>=l && j<=r) //if this interval lies inside l--r
- return seg[node];
- if(i>r || j<l || r<l)return INT_MIN;
- int mid = (i+j)/2;
- return max( query(2*node+1,i,mid,l,r) , query(2*node+2,mid+1,j,l,r) );
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement