Pagini recente » Cod sursa (job #619569) | Cod sursa (job #174153) | Cod sursa (job #721280) | Cod sursa (job #861370) | Cod sursa (job #3242814)
#include <bits/stdc++.h>
using namespace std;
const int max_N = 200005;
int t[max_N + 5];
int N;
void build() {
int start = N / 2;
int end = N;
while (start > 0) {
for (int i = start - 1; i < end; i++) {
t[i] = min(t[i * 2], t[i * 2 + 1]);
}
start /= 2;
end /= 2;
}
}
int query(int l, int r) {
l += N - 1;
r += N - 1;
int res = 1e9;
while (l <= r) {
if (l % 2 == 1) {
res = min(res, t[l]);
l++;
}
if (r % 2 == 0) {
res = min(res, t[r]);
r--;
}
l /= 2;
r /= 2;
}
return res;
}
int main() {
ifstream cin("rmq.in");
ofstream cout("rmq.out");
int Q;
cin >> N >> Q;
for (int i = 0; i < N; i++) {
cin >> t[i + N];
}
build();
while (Q--) {
int l, r;
cin >> l >> r;
cout << query(l, r) << '\n';
}
return 0;
}