Pagini recente » Cod sursa (job #173225) | Cod sursa (job #1958814) | Cod sursa (job #1235950) | Cod sursa (job #1952786) | Cod sursa (job #2845966)
#include <bits/stdc++.h>
using namespace std;
const int maxn = 200001;
const int lg = 20;
ifstream in ("rmq.in");
ofstream out ("rmq.out");
int a[maxn];
int sp[maxn][lg];
int query (int l, int r) {
int el = r - l + 1;
int base = log2(el);
return min(sp[l][base], sp[r - (1 << base) + 1][base]);
}
int main() {
int n, m;
in >> n >> m;
for (int i = 0; i < n; i++){
in >> a[i];
sp[i][0] = a[i];
}
for (int k = 1; k < lg; k++){
for (int i = 0; i + (1 << k) - 1 < n; i++) {
sp[i][k] = min(sp[i][k-1], sp[i + (1 << (k - 1))][k-1]);
}
}
while (m--) {
int l,r;
in >> l >> r;
out << query(l, r) << "\n";
}
}