Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- #define mx 500005
- int ar[mx];
- int tree[mx*4];
- int n,i,t,q,b,e,z=1,cnt=0;
- void init(int node, int b, int e)
- {
- //cout<<1<<endl;
- //int p1,p2;
- if(b==e)
- {
- tree[node]=ar[b];
- return;
- }
- int left=node*2;
- int right=(node*2)+1;
- int mid=(b+e)/2;
- init(left, b, mid);
- init(right, mid+1, e);
- //tree[node]=min( init(left, b, mid),);
- tree[node]=min(tree[left],tree[right]);
- //cout<<tree[node]<<endl;
- //tree[node]=min(tree[node*2],tree[node*2+1]);
- }
- int query(int node, int b, int e, int i, int j)
- {
- int p1,p2;
- if(i<=b && j>=e)
- return tree[node];
- if(i>e || j<b)
- return INT_MAX;
- int left=node*2;
- int right=(node*2)+1;
- int mid=(b+e)/2;
- //query(left, b, mid, i, j);
- // query(right, mid+1, e, i, j);
- return min(query(left,b,mid,i,j),query(right,mid+1,e,i,j));
- }
- int main()
- {
- cin>>t;
- while(t--)
- {
- cout<<endl;
- cin>>n>>q;
- for(i=1;i<=n;i++)
- {
- cin>>ar[i];
- }
- //cout<<1<<endl;
- init(1,1,n);
- //cout<<"ok"<<endl;
- printf("Case %d:\n",z++);
- while(q--)
- {
- int st,en,ans;
- cin>>st>>en;
- ans=query(1,1,n,st,en);
- cout<<ans<<endl;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement