プレフィックス和配列は累積合計を格納し、範囲和が O(n) の前処理後に O(1) で答えられます。クエリごとに O(n) ではなく。
アイデア
prefix[i] を最初の i 個の要素の合計とします。すると、arr[l..r] の合計は prefix[r+1] - prefix[l] です。
例
python
():
prefix = [] * ((arr) + )
i, x (arr):
prefix[i + ] = prefix[i] + x
prefix
():
prefix[r + ] - prefix[l]
p = build_prefix([, , , , ])
range_sum(p, , )
