rt。我自己的模板写挂了,或者可以帮我调一下
template<typename T,int MAXN=1<<17,class Cmp=greater<T>>
struct ST{;
T st[MAXN][24];
int log[MAXN+1];
Cmp cmp;
void build(T* a,int n){
for(int i=2;i<=n;i++)log[i]=log[i>>1]+1;
for(int i=0;i<n;i++)st[i][0]=a[i+1];
for(int j=1;j<24;j++)
for(int i=0;i+(1<<j)<=n;i++)
st[i][j]=cmp(st[i][j-1],st[i+(1<<(j-1))][j-1]);
}
T query(int l,int r){
l--,r--;
int k=log[r-l+1];
return cmp(st[l][k],st[r-(1<<k)+1][k]);
}
};