Pagini recente » Cod sursa (job #2817579) | Cod sursa (job #789090) | Cod sursa (job #3181033) | Cod sursa (job #3266211) | Cod sursa (job #2723034)
#include <bits/stdc++.h>
using namespace std;
int main() {
ifstream cin("rmq.in");
ofstream cout("rmq.out");
int n, m;
cin >> n >> m;
vector < vector <int> > w(20);
w[0].resize(n);
for (auto& it : w[0]) {
cin >> it;
}
vector <int> Log2(n + 5, 0);
for (int i = 2; i <= n; ++i) {
Log2[i] = Log2[i >> 1] + 1;
}
for (int i = 1; (1 << i) <= n; ++i) {
w[i].resize(n);
for (int j = 0; j + (1 << i) - 1 < n; ++j)
w[i][j] = min(w[i - 1][j], w[i - 1][j + (1 << (i - 1))]);
}
while (m--) {
int x, y;
cin >> x >> y;
--x; --y;
int k = Log2[y - x + 1];
cout << min(w[k][x], w[k][y - (1 << k) + 1]) << '\n';
}
return 0;
}