Advertisement
Guest User

Untitled

a guest
Feb 25th, 2017
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.57 KB | None | 0 0
  1. // a is array and seg is segment_tree array (it is segment_tree_for max_range)
  2. void build(int node,int i,int j)
  3. {
  4. if(i==j)
  5. {
  6. seg[node]=a[i];
  7. return ;
  8. }
  9.  
  10. int mid = (i+j)/2;
  11.  
  12. build(2*node+1,i,mid);
  13. build(2*node+2,mid+1,j);
  14.  
  15. seg[node]=max(seg[2*node+1],seg[2*node+2]);
  16.  
  17. }
  18.  
  19. ll query(int node,int i,int j,int l,int r)
  20. {
  21. if(i>=l && j<=r) //if this interval lies inside l--r
  22. return seg[node];
  23.  
  24. if(i>r || j<l || r<l)return INT_MIN;
  25.  
  26. int mid = (i+j)/2;
  27. return max( query(2*node+1,i,mid,l,r) , query(2*node+2,mid+1,j,l,r) );
  28. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement