Pagini recente » Cod sursa (job #1419948) | Cod sursa (job #542731) | Cod sursa (job #1640600) | Cod sursa (job #1517821) | Cod sursa (job #1940549)
#include <iostream>
#include <fstream>
#include <math.h>
using namespace std;
int n, nq;
int m[100005][18], v[100005];
void preprocess_rmq() {
for (int i = 1; i <= n; ++i) m[i][0] = v[i];
for (int j = 1; j <= 17; ++j) {
for (int i = 1; i <= n; ++i) {
m[i][j] = min(m[i][j-1], m[i + (1 << (j-1))][j-1]);
}
}
}
int rmq(int i, int j) {
int l = i - j + 1;
int k = log2(l);
return min(m[i][k], m[j - (1 << k) + 1][k]);
}
int main() {
ifstream in("rmq.in");
ofstream out("rmq.out");
in >> n >> nq;
for (int i = 1; i <= n; ++i) in >> v[i];
preprocess_rmq();
for (int q = 1, i, j; q <= nq; ++q) {
in >> i >> j;
out << rmq(i, j) << '\n';
}
return 0;
}