2D Sparse Table answers rectangle min/max queries.
Precompute = answer for rectangle starting at with size .
Build by combining four quadrants:
st[r][c][i][j] = min(
st[r][c][i-1][j-1],
st[r + 2^(i-1)][c][i-1][j-1],
st[r][c + 2^(j-1)][i-1][j-1],
st[r + 2^(i-1)][c + 2^(j-1)][i-1][j-1]
)
Query uses four overlapping rectangles.
Space: . Build: . Query: .