Pagini recente » Cod sursa (job #1913335) | Cod sursa (job #3135308) | Borderou de evaluare (job #2072693) | Cod sursa (job #695310) | Cod sursa (job #3233185)
#include <bits/stdc++.h>
#define ll long long
#define pb push_back
using namespace std;
int seg[400004];
int a[100001];
void build(int nod, int l, int r){
if(l == r) seg[nod] = a[l];
else{
int m = (l+r)/2;
build(2*nod,l,m);
build(2*nod+1,m+1,r);
seg[nod] = min(seg[2*nod],seg[2*nod+1]);
}
}
int query(int nod, int l, int r, int left, int right){
if(left <= l && r <= right) return seg[nod];
else if(right < l || r < left) return 1e9;
else{
int m = (l+r)/2;
return min(query(2*nod,l,m,left,right),query(2*nod+1,m+1,r,left,right));
}
}
int main()
{
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
int n;
cin >> n;
int q;
cin >> q;
for(int i = 1;i<=n;i++){
cin >> a[i];
}
build(1,1,n);
// cout<<seg[3];
while(q--){
int l,r;
cin >> l >> r;
cout << query(1,1,n,l,r)<<"\n";
}
return 0;
}