Example 05 — Sparse segtree + lazy output

9-step walkthrough. Node pop-in khi allocate. Lazy badge hiển thị khi tag != null. nav.

0 1 2 3 4 5 6 7 [0,7] 0 [0,3] 0 [4,7] 0 [0,1] 0 [2,3] 0 [4,5] 0 [6,7] 0 [4,4] 0 [5,5] 0
Step 1 / 9

STEP 1 — INITIAL

Trục $[0, 7]$. Chỉ root $[0,7]$ tồn tại ban đầu. Lazy sparse segtree.

Pop $[0,7]$. Giao $[2,5]$ không full → phải allocate 2 con.

Tạo $[0,3]$ và $[4,7]$ on-demand. Cả 2 chưa có gì, $\text{sum}=0$, $\text{lazy}=\bot$.

Xuống $[0,3]$: giao $[2,3]$ không full, allocate tiếp.

$[2,3]$ phủ hoàn toàn trong $[2,5]$ → set lazy=3, $\text{sum}=2 \cdot 3=6$. Không xuống sâu hơn.

Bên phải: $[4,5]$ phủ hoàn toàn → set lazy=3, sum=6. $[6,7]$ ngoài khoảng.

Bubble-up sum: $[0,3]=6$, $[4,7]=6$, root $=12$. set(2,5)=3 hoàn tất.

set(4,7)=2 cần xuống $[4,5]$. Nó có lazy=3 cũ → push_down: tạo $[4,4]$, $[5,5]$ với lazy=3.

Final: sau cả 3 op, root $=14$. Mỗi op $O(\log \text{range})$, node $O(\text{ops} \cdot \log \text{range})$ thay vì $O(\text{range})$.