Pagini recente » Cod sursa (job #936205) | Cod sursa (job #395385) | Cod sursa (job #1651335) | Cod sursa (job #1793444) | Cod sursa (job #3242800)
/*****************************************
Butoi Alexandru - Gabriel
Colegiul National
"Iancu de Hunedoara"
*****************************************/
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int n, m, rmq[18][100003];
#if functii
#define cin fin
#define cout fout
#endif
int main() {
/*int p;
p = 31 - __builtin_clz(r-l+1); /// O(1)
/// sau pt codeblocks
g[i] = p.max;
lg[1] = 0;
lg[i] = 1 + lg [i/2];
2^p <= i;*/
cin >> n >> m;
for (int i = 1; i <= n; i++)
{
cin >> rmq[0][i];
}
int exp = 1;
while ((1 << exp) <= n)
{
for (int i = 1; i + (1 << exp) - 1 <= n; i++)
{
rmq[exp][i] = min(rmq[exp-1][i], rmq[exp-1][i + (1 << (exp-1))]);
}
exp++;
}
for (int i = 1; i <= m; i++)
{
int l, r;
cin >> l >> r;
int lg = r - l + 1;
int p = 31 - __builtin_clz(lg); // O(1)
cout << min(rmq[p][l], rmq[p][r - (1 << p) + 1]) << '\n';
}
return 0;
}