Pagini recente » Cod sursa (job #2070814) | Cod sursa (job #421344) | Monitorul de evaluare | Cod sursa (job #40852) | Cod sursa (job #2681258)
#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;
}
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;
}