Pagini recente » Cod sursa (job #2942570) | Cod sursa (job #2877831) | Cod sursa (job #604675) | Cod sursa (job #1746004) | Cod sursa (job #3158247)
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
const int NMAX = 1e5 + 5;
int rmq[NMAX][20], n, q;
void generare() {
for (int p = 1; p <= 17; p++) {
for (int i = 1; i <= n - (1 << p) + 1; i++) {
rmq[i][p] = min(rmq[i][p - 1], rmq[i + (1 << (p - 1))][p - 1]);
}
}
}
int main() {
fin >> n >> q;
for (int i = 1; i <= n; i++) {
fin >> rmq[i][0];
}
generare();
while (q--) {
int x, y;
fin >> x >> y;
int l = y - x + 1, p = 0;
while ((1 << (p + 1)) <= l)
p++;
int res = min(rmq[x][p], rmq[y - (1 << p) + 1][p]);
fout << res << '\n';
}
return 0;
}