Pagini recente » Cod sursa (job #1683907) | Cod sursa (job #2870741) | Cod sursa (job #1533342) | Cod sursa (job #3277392) | Cod sursa (job #3263277)
#include <bits/stdc++.h>
using namespace std;
int main() {
ifstream cin("rmq.in");
ofstream cout("rmq.out");
int n, m;
cin >> n >> m;
vector<int> date(n);
for (auto &x : date)
cin >> x;
vector<vector<int>> rmq(1 << __lg(n));
rmq[0] = move(date);
for (int i = 1; i < rmq.size(); i++) {
int offset = 1 << (i - 1);
rmq[i].resize(n);
for (int j = 0; j + offset < n; j++) {
rmq[i][j] = min(rmq[i-1][j], rmq[i-1][j + offset]);
}
}
for (int i = 0; i < m ; i++) {
int l, r;
cin >> l >> r;
int dist = r - l + 1;
int max_pow = __lg(dist);
cout << min(rmq[max_pow][l], rmq[max_pow][r - (1 << max_pow)]) << endl;
}
}