Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <cstdio>#include <vector>#include <cstdlib>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int MAXN = 1000000 + 10;int N, M, A[MAXN], T[MAXN * 10];void buildTree(int p, int l, int r){if (l == r) {T[p] = A[r];} else {buildTree(p << 1, l, (l + r) >> 1);buildTree((p << 1) | 1, ((l + r) >> 1) + 1, r);T[p] = min(T[p << 1], T[(p << 1) | 1]);}}int query(int p, int l, int r, int x, int y){if (x <= l && r <= y) {return T[p];}if (r < x || y < l) {return 100000;}int m = (l + r) >> 1;return min(query(p << 1, l, m, x, y), query((p << 1) | 1, m + 1, r, x, y));