Pagini recente » Cod sursa (job #3316866) | Cod sursa (job #1652834) | Cod sursa (job #3316912) | Cod sursa (job #2387623) | Cod sursa (job #3358525)
#include <bits/stdc++.h>
using namespace std;
int main() {
int x, q;
cin >> x >> q;
vector<int> v(x);
for (int i = 0; i < x; i++) cin >> v[i];
const int p = 31 - __builtin_clz(x);
vector<vector<int>> rmq(p + 1, vector<int>(x));
for (int i = 0; i < x; i++) {
rmq[0][i] = v[i];
}
for (int i = 1; i <= p; i++) {
for (int j = 0; j + (1 << i) <= x; j++) {
rmq[i][j] = min(rmq[i - 1][j], rmq[i-1][j+(1<<(i-1))]);
}
}
while (q--) {
int a, b;
cin >> a >> b;
a--; b--;
const int l = b - a + 1;
const int y = 31 - __builtin_clz(l);
cout << min(rmq[y][a], rmq[y][b - (1 << y) + 1])<< endl;
}
return 0;
}