int f[maxn][22]; int n,m; void ST_prework(){ for(int i=1;i<=n;i++) cin>>f[i][0]; int t=log2(n)+1; for(int j=1;j<t;j++){ for(int i=1;i<=n-(1<<j)+1;i++){ f[i][j]=min(f[i][j-1],f[i+(1<<(j-1))][j-1]); } } } int ST_query(int l,int r){ int k=log2(r-l+1); return min(f[l][k],f[r-(1<<k)+1][k]); }