Pagini recente » Cod sursa (job #977657) | Cod sursa (job #2692386) | Cod sursa (job #1726799) | Cod sursa (job #1562930) | Cod sursa (job #3242804)
/*****************************************
Butoi Alexandru - Gabriel
Colegiul National
"Iancu de Hunedoara"
*****************************************/
#include <fstream>
#define ll long long
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int n, m, rmq[18][100003];
#if 1
#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 i = 1;
while ((1 << i) <= n) {
for (int j = 1; j + (1 << i) - 1 <= n; j++) {
rmq[i][j] = min(rmq[i-1][j], rmq[i-1][j + (1 << (i-1))]);
} i++;
}
for (int i = 1; i <= m; i++) {
int l, r;
cin >> l >> r;
int p = 31 - __builtin_clz(r - l + 1); /// O(1)
cout << min(rmq[p][l], rmq[p][r - (1 << p) + 1]) << '\n';
}
return 0;
}