Template int f[MAXN][21]; void ST(){ // 不用初始化 forr(i,1,n) f[i][0] = b[i]; forr(i,1,20)for(int j = 1;j+(1<<i)-1 <= n;j++){ f[j][i] = max(f[j][i-1],f[j+(1<<(i-1))][i-1]); } } int query(int l,int r){ int s = __lg(r-l+1); return max(f[l][s],f[r-(1<<s)+1][s]); }