Pagini recente » Cod sursa (job #1446403) | Cod sursa (job #2332649) | Cod sursa (job #529583) | Cod sursa (job #3328799) | Cod sursa (job #3301612)
#include <bits/stdc++.h>
using namespace std;
int rmq[100005][18];
int lg[100005];
int main(){
ifstream cin("rmq.in");
ofstream cout("rmq.out");
lg[1] = 0;
for(int i = 2; i <= 100000; i++)
lg[i] = lg[i / 2] + 1;
int n, q;
cin >> n >> q;
for(int i = 1; i <= n; i++){
cin >> rmq[i][0];
}
for(int b = 1; (1<<b) <= n; b++){
for(int i = 1; i + (1<<b) - 1 <= n; i++){
rmq[i][b] = min(rmq[i][b - 1], rmq[i + (1<<(b - 1))][b - 1]);
}
}
while(q--){
int a, b;
cin >> a >> b;
int l = lg[b - a + 1];
cout << min(rmq[a][l], rmq[b - (1<<l) + 1][l]) << '\n';
}
return 0;
}