struct ST{
int n;
vector<vector<int>> st;
ST(int x = 1e5){
n = x;
st.resize(x + 1, vector<int>(log2(n) + 1));
}
void build(int a[]){
for (int i = 1; i <= n; i ++ ){
st[i][0] = a[i];
}
for (int i = 1; i <= 20; i ++ ){
for (int j = 1; j + (1 << i) - 1 <= n; j ++ ) {
st[j][i] = min(st[j][i - 1], st[j + (1 << i - 1)][i - 1]);
}
}
}
int query(int l, int r){
int k = log2(r - l + 1);
return min(st[l][k], st[r - (1 << k) + 1][k]);
}
};
浙公网安备 33010602011771号