Pagini recente » Cod sursa (job #585206) | Cod sursa (job #2571910) | Cod sursa (job #570457) | Cod sursa (job #1185908) | Cod sursa (job #2626125)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int n, m, vek[100000];
int rmq[100][1000];
int log[1000];
int main() {
f >> n >> m;
for (int i = 2; i <= n; i *= 2) log[i]++;
for (int i = 1; i <= n; i++) log[i] += log[i - 1];
for (int i = 1; i <= n; i++) {
f >> vek[i];
rmq[0][i] = vek[i];
}
for (int h = 1; (1 << h) <= n; ++h) {
for (int i = 1; i <= n - (1 << h) + 1; ++i) {
rmq[h][i] = min(rmq[h - 1][i], rmq[h - 1][i + (1 << (h - 1))]);
}
}
for (int i = 1; i <= m; ++i) {
int x, y;
f >> x >> y;
int h = log[y - x + 1];
g << min(rmq[h][x], rmq[h][y - (1 << h) + 1]) << "\n";
}
return 0;
}