Pagini recente » Cod sursa (job #2711547) | Cod sursa (job #3307287) | Cod sursa (job #443997) | Cod sursa (job #3334851) | Cod sursa (job #3309296)
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
ifstream cin{"rmq.in"};
ofstream cout{"rmq.out"};
int N, Q;
cin >> N >> Q;
int rmq[100005][17];
for (int i = 1; i <= N; i++) {
int a;
cin >> a;
rmq[i][0] = a;
}
for (int j = 1; (1 << j) <= N; j++) {
for (int i = 1; i + (1 << j) - 1 <= N; i++) {
rmq[i][j] = min(rmq[i][j - 1], rmq[i + (1 << (j - 1))][j - 1]);
}
}
while (Q--) {
int a, b;
cin >> a >> b;
int len = (b - a + 1);
int eep = 31 - __builtin_clz(len);
cout << min(rmq[a][eep], rmq[b - (1 << eep) + 1][eep]) << '\n';
}
return 0;
}