记录:

代码:
#include <iostream>
#define INF 2147483647
using namespace std;
int m, n, p, x, y, a[100009], tree[400009];
void build(int node, int l, int r) {
if (l == r) {
tree[node] = a[l];
return;
}
int mid = (l + r) >> 1;
build(node << 1, l, mid);
build((node << 1) + 1, mid + 1, r);
tree[node] = min(tree[node << 1], tree[(node << 1) + 1]);
}
void update(int node, int l, int r, int id, int x) {
if (l == r) {
tree[node] = x;
return;
}
int mid = (l + r) >> 1;
if (id <= mid) {
update(node << 1, l, mid, id, x);
} else {
update((node << 1) + 1, mid + 1, r, id, x);
}
tree[node] = min(tree[node << 1], tree[(node << 1) + 1]);
}
int query(int node, int l, int r, int L, int R) {
if (L <= l && R >= r) {
return tree[node];
}
int mid = (l + r) >> 1;
return min(mid >= L ? query(node << 1, l, mid, L, R) : INF,
mid < R ? query((node << 1) + 1, mid + 1, r, L, R) : INF);
}
int main() {
cin >> m >> n;
for (int i = 1; i <= m; i++) {
cin >> a[i];
}
build(1, 1, n);
for (int i = 1; i <= n; i++) {
cin >> x >> y;
cout << query(1, 1, n, x, y) << " ";
}
}