Advertisement
Guest User

1082 Array Queries

a guest
Apr 7th, 2020
272
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.58 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define FAST_IO ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
  4. #define mx 100005
  5. int tree[mx*3];
  6. int arr[mx];
  7. void build_segment(int node,int left,int right){
  8.     if(left==right){
  9.         tree[node]=arr[left];
  10.         //cout<<"Index "<<node<<": "<<tree[node]<<endl;
  11.         return;
  12.     }
  13.     int mid=(left+right)/2;
  14.     build_segment(node*2, left, mid); //left subtree
  15.     build_segment(node*2 + 1, mid+1, right); //right subtree
  16.     tree[node]=min(tree[node*2], tree[node*2 + 1]);
  17.     //cout<<"IndexMin "<<node<<": "<<tree[node]<<endl;
  18. }
  19. int query_seqment(int node,int left,int right,int ia,int ib){
  20.  
  21.     if(left>=ia && right<=ib)
  22.         return tree[node];
  23.     if(ia>right || ib<left)
  24.         return INT_MAX;
  25.     int mid=(left+right)/2;
  26.     int p=query_seqment(node*2, left, mid, ia, ib); //left child query
  27.     int q=query_seqment(node*2 + 1, mid+1, right, ia, ib); //right child query
  28.     return min(p,q);
  29.  
  30.  
  31. }
  32. int main(){
  33.     FAST_IO
  34.     //freopen("input.txt","r",stdin);
  35.     //freopen("output.txt","w",stdout);
  36.     int t;
  37.     cin>>t;
  38.     for(int tc=1;tc<=t;tc++){
  39.         int n,q;
  40.         cin>>n>>q;
  41.         for(int i=1;i<=n;i++){
  42.             cin>>arr[i];
  43.         }
  44.         //root node, left most node, right most node
  45.         build_segment(1,1,n);
  46.         int ia,ib;
  47.         cout<<"Case "<<tc<<":"<<endl;
  48.         for(int i=1;i<=q;i++){
  49.             cin>>ia>>ib;
  50.             //root, left most, right most, from node, to node
  51.             cout<<query_seqment(1,1,n,ia,ib)<<endl;
  52.         }
  53.     }
  54.     return 0;
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement