Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2019
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.39 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define mx 500005
  4. int ar[mx];
  5. int tree[mx*4];
  6. int n,i,t,q,b,e,z=1,cnt=0;
  7.  
  8. void init(int node, int b, int e)
  9. {
  10.     //cout<<1<<endl;
  11.     //int p1,p2;
  12.     if(b==e)
  13.     {
  14.         tree[node]=ar[b];
  15.         return;
  16.     }
  17.     int left=node*2;
  18.     int right=(node*2)+1;
  19.     int mid=(b+e)/2;
  20.     init(left, b, mid);
  21.     init(right, mid+1, e);
  22.    //tree[node]=min( init(left, b, mid),);
  23.      tree[node]=min(tree[left],tree[right]);
  24.    //cout<<tree[node]<<endl;
  25.    //tree[node]=min(tree[node*2],tree[node*2+1]);
  26. }
  27.  
  28. int query(int node, int b, int e, int i, int j)
  29. {
  30.     int p1,p2;
  31.     if(i<=b && j>=e)
  32.         return tree[node];
  33.     if(i>e || j<b)
  34.         return INT_MAX;
  35.     int left=node*2;
  36.     int right=(node*2)+1;
  37.     int mid=(b+e)/2;
  38.     //query(left, b, mid, i, j);
  39.     // query(right, mid+1, e, i, j);
  40.     return min(query(left,b,mid,i,j),query(right,mid+1,e,i,j));
  41. }
  42.  
  43. int main()
  44. {
  45.     cin>>t;
  46.     while(t--)
  47.     {
  48.         cout<<endl;
  49.         cin>>n>>q;
  50.         for(i=1;i<=n;i++)
  51.         {
  52.             cin>>ar[i];
  53.         }
  54.        //cout<<1<<endl;
  55.         init(1,1,n);
  56.         //cout<<"ok"<<endl;
  57.         printf("Case %d:\n",z++);
  58.         while(q--)
  59.         {
  60.             int st,en,ans;
  61.             cin>>st>>en;
  62.             ans=query(1,1,n,st,en);
  63.             cout<<ans<<endl;
  64.         }
  65.     }
  66.     return 0;
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement