11 if(!is_min) SparseTable2D
.sign=-1;
12 SparseTable2D
.h=a.size();
13 SparseTable2D
.w=a[0].size();
14 int H=SparseTable2D
.h,W=SparseTable2D
.w;
15 for(
int i=0; i<H; i++)
for(
int j=0; j<W; j++) SparseTable2D
.dat[0][0][i][j]=SparseTable2D
.sign*a[i][j];
17 for(
int k=1; (1<<k)<=H; k++) {
18 for(
int i=0; i+(1<<k)<=H; i++) {
19 for(
int j=0; j<W; j++) {
20 SparseTable2D
.dat[k][0][i][j]=min(
21 SparseTable2D
.dat[k-1][0][i][j],
22 SparseTable2D
.dat[k-1][0][i+(1<<(k-1))][j]
27 for(
int k=0;(1<<k)<=H;k++) {
28 for(
int l=1;(1<<l)<=W;l++) {
29 for(
int i=0;i+(1<<k)<=H;i++) {
30 for(
int j=0;j+(1<<l)<=W;j++) {
31 SparseTable2D
.dat[k][l][i][j]=min(
32 SparseTable2D
.dat[k][l-1][i][j],
33 SparseTable2D
.dat[k][l-1][i][j+(1<<(l-1))]