Pagini recente » Cod sursa (job #2522191) | Cod sursa (job #106681) | Borderou de evaluare (job #1567287) | Cod sursa (job #2305395) | Cod sursa (job #3284256)
#include <bits/stdc++.h>
#define MAX 500
using namespace std;
ifstream in("rmq.in");
ofstream out("rmq.out");
int m[MAX][MAX], a[MAX], n, q;
void preprocess() {
for (int k=2; (1 << k) <= n; ++k) {
for (int i=1; 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=1; i<=n; ++i) {
in >> a[i];
m[i][1] = a[i];
}
preprocess();
int l,r;
for (int i=1; i<=q; ++i) {
in >> l >> r;
out << query(l,r) << '\n';
}
return 0;
}