Pagini recente » Cod sursa (job #3310333) | Cod sursa (job #3332686) | Cod sursa (job #2371362) | Cod sursa (job #3314394) | Cod sursa (job #3358527)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int main() {
int x, q;
fin >> 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;
fin >> a >> b;
a--; b--;
const int l = b - a + 1;
const int y = 31 - __builtin_clz(l);
fout << min(rmq[y][a], rmq[y][b - (1 << y) + 1])<< endl;
}
return 0;
}