Pagini recente » Cod sursa (job #3145686) | Cod sursa (job #2324093) | Cod sursa (job #301650) | Cod sursa (job #2377102) | Cod sursa (job #809817)
Cod sursa(job #809817)
#include <cstdio>
#include <algorithm>
using namespace std;
inline int next_int() {
int d;
scanf("%d", &d);
return d;
}
const int H = 17;
int M[1 << H][H];
int main() {
freopen("rmq.in", "r", stdin);
freopen("rmq.out", "w", stdout);
int n = next_int();
int m = next_int();
for (int i = 0; i < n; i++) {
M[i][0] = next_int();
}
for (int j = 1; j < H; j++) {
for (int i = 0; i + (1 << (j - 1)) < (1 << H); i++) {
M[i][j] = min(M[i][j - 1], M[i + (1 << (j - 1))][j - 1]);
}
}
for (int i = 0; i < m; i++) {
int a = next_int() - 1;
int b = next_int();
int k = H;
while ((1 << k) > b - a) {
k--;
}
printf("%d\n", min(M[a][k], M[b - (1 << k)][k]));
}
return 0;
}