Pagini recente » Cod sursa (job #2605309) | Cod sursa (job #440500) | Cod sursa (job #2923683) | Cod sursa (job #3323559) | Cod sursa (job #3330545)
#include <bits/stdc++.h>
using namespace std;
int main() {
// ios::sync_with_stdio(false);
// cin.tie(nullptr);
ifstream cin("rmq.in");
ofstream cout("rmq.out");
int n, m;
cin >> n >> m;
vector<int> input(n);
for (auto &x : input)
cin >> x;
int max_lg = __lg(n);
vector<vector<int>> rmq(max_lg + 1);
rmq[0] = move(input);
for (int k = 0; k < max_lg; k++)
{
int len = 1 << k;
vector<int> vec(n - (len<<1) + 1);
for (int j = 0; auto& elem : vec)
{
elem = min(rmq[k][j], rmq[k][j + len]);
j++;
}
rmq[k + 1] = move(vec);
}
while (m--)
{
int a, b;
cin >> a >> b;
a--;b--;
int len_lg = __lg(b - a + 1);
cout << min(rmq[len_lg][a], rmq[len_lg][b - (1<<len_lg) + 1]) << '\n';
}
}