Pagini recente » Cod sursa (job #490153) | Cod sursa (job #2503883) | Cod sursa (job #1397415) | Cod sursa (job #3217424) | Cod sursa (job #2836248)
#include <bits/stdc++.h>
using namespace std;
int e[100010], a[17][100010];
int n,q;
int main(void){
ofstream cout("rmq.out");
ifstream cin("rmq.in");
cin >> n >> q;
for(int i =1;i<=n;i++){
cin >> a[0][i];
}
for(int p = 1;(1<<p)<=n;p++){
for(int i = 1;i<=n;i++){
a[p][i] = a[p-1][i];
int j = i + (1<<(p-1));
if(j <= n && a[p][i] > a[p-1][j])
a[p][i] = a[p-1][j];
}
}
for(int i = 2;i<=n;i++){
e[i] = 1+e[i/2];
}
for(int i =0;i<q;i++){
int x,y;
cin >> x >> y;
int ex = e[y-x+1];
int len = 1<<ex;
cout << min(a[ex][x], a[ex][y-len+1]) << endl;
}
}