Pagini recente » Cod sursa (job #260275) | Cod sursa (job #2761135) | Cod sursa (job #568693) | Cod sursa (job #162253) | Cod sursa (job #3284269)
#include <bits/stdc++.h>
#define MAX 100001
using namespace std;
ifstream in("rmq.in");
ofstream out("rmq.out");
int m[MAX][18], a[MAX], n, q;
void preprocess() {
for (int k=1; (1 << k) <= n; ++k) {
for (int i=0; i + (1 << k) - 1 < n; ++i) {
m[i][k] = min(m[i][k-1], m[i + (1 << (k-1))][k-1]);
}
}
}
int query(int l, int r) {
int j = (int)log2(r - l + 1);
return min(m[l][j], m[r - (1 << j) + 1][j]);
}
int main() {
in >> n >> q;
for (int i=0; i<n; ++i) {
in >> a[i];
m[i][0] = a[i];
}
preprocess();
int l,r;
for (int i=1; i<=q; ++i) {
in >> l >> r;
out << query(l-1,r-1) << '\n';
}
return 0;
}