Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- typedef long double ld;
- const int MX=1e5+5;
- int n,q,ar[MX],tree[4*MX];
- void build(int x=1,int l=1,int r=n)
- {
- if(r==l)
- {
- tree[x]=ar[r];
- return ;
- }
- int mid=(r+l)/2;
- build(2*x,l,mid);
- build(2*x+1,mid+1,r);
- tree[x]=min(tree[2*x],tree[2*x+1]);
- return;
- }
- int stq,enq;
- int query(int x=1,int l=1,int r=n)
- {
- if(stq<=l&&enq>=r)return tree[x];
- if(stq>r||enq<l)return 1e6;
- int mid=(r+l)/2;
- int ret=1e6;
- ret=min(query(2*x,l,mid),query(2*x+1,mid+1,r));
- return ret;
- }
- int main()
- {
- // freopen("out.txt","w",stdout);
- int t,d=0;
- cin>>t;
- while(t--){
- cin>>n>>q;
- d++;
- memset(tree,0,sizeof tree);
- for(int i=1;i<=n;i++)
- {
- scanf("%d",ar+i);
- }
- build();
- printf("Case %d:\n",d);
- for(int i=0;i<q;i++)
- {
- int x,y;
- cin>>x>>y;
- stq=x,enq=y;
- printf("%d\n",query());
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement