Advertisement
Guest User

Untitled

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