Advertisement
jeff69

Untitled

Oct 21st, 2016
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.04 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  typedef long long ll;
  4. typedef long double ld;
  5. const int MX=1e5+5;
  6. int n,q,ar[MX],tree[4*MX];
  7. void build(int x=1,int l=1,int r=n)
  8. {
  9.     if(r==l)
  10.     {
  11.         tree[x]=ar[r];
  12.         return ;
  13.     }
  14.     int mid=(r+l)/2;
  15.     build(2*x,l,mid);
  16.     build(2*x+1,mid+1,r);
  17.     tree[x]=min(tree[2*x],tree[2*x+1]);
  18.     return;
  19. }
  20. int stq,enq;
  21. int query(int x=1,int l=1,int r=n)
  22. {
  23.     if(stq<=l&&enq>=r)return tree[x];
  24.     if(stq>r||enq<l)return 1e6;
  25.         int mid=(r+l)/2;
  26.  
  27.     int ret=1e6;
  28.  
  29.         ret=min(query(2*x,l,mid),query(2*x+1,mid+1,r));
  30.  
  31.         return ret;
  32. }
  33. int main()
  34. {
  35.    // freopen("out.txt","w",stdout);
  36.     int t,d=0;
  37.     cin>>t;
  38.     while(t--){
  39.     cin>>n>>q;
  40.     d++;
  41.     memset(tree,0,sizeof tree);
  42.  
  43.     for(int i=1;i<=n;i++)
  44.     {
  45.         scanf("%d",ar+i);
  46.     }
  47.     build();
  48.     printf("Case %d:\n",d);
  49.     for(int i=0;i<q;i++)
  50.     {
  51.         int x,y;
  52.         cin>>x>>y;
  53.         stq=x,enq=y;
  54.         printf("%d\n",query());
  55.     }
  56.     }
  57.     return 0;
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement