Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- int n;
- int tree[2000];
- int ar[1000];
- void init(int node,int b,int e)
- {
- 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(tree[left],tree[right]);
- }
- int query_min(int node,int b,int e,int i,int j)
- {
- if(i>e||j<b)
- return INT_MAX;
- if(b>=i&&e<=j)
- return tree[node];
- int left=node*2;
- int right=(node*2)+1;
- int mid=(b+e)/2;
- int p1=query_min(left,b,mid,i,j);
- int p2=query_min(right,mid+1,e,i,j);
- return min(p1,p2);
- }
- int main()
- {
- int k,n,Q,i,j;
- cin>>n>>Q;
- for(k=1;k<=n;k++)
- cin>>ar[k];
- init(1,1,n);
- while(Q--)
- {
- cin>>i>>j;
- cout<<query_min(1,1,n,i,j)<<endl;
- }
- }
Add Comment
Please, Sign In to add comment