From aa20248672a526b4e0444af1ec5c87682ed11c21 Mon Sep 17 00:00:00 2001 From: Kotecha Udit Hitendra <64374551+kirito-udit@users.noreply.github.com> Date: Sat, 2 Oct 2021 20:08:24 +0530 Subject: [PATCH] Create Fenwick Tree-Range Sum Queries.cpp --- Algorithms/Fenwick Tree-Range Sum Queries.cpp | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 Algorithms/Fenwick Tree-Range Sum Queries.cpp diff --git a/Algorithms/Fenwick Tree-Range Sum Queries.cpp b/Algorithms/Fenwick Tree-Range Sum Queries.cpp new file mode 100644 index 0000000..94cb3dc --- /dev/null +++ b/Algorithms/Fenwick Tree-Range Sum Queries.cpp @@ -0,0 +1,31 @@ +struct FenwickTree { + vector bit; // binary indexed tree + int n; + + FenwickTree(int n) { + this->n = n; + bit.assign(n, 0); + } + + FenwickTree(vector a) : FenwickTree(a.size()) { + for (size_t i = 0; i < a.size(); i++) + add(i, a[i]); + } + + int sum(int r) { + int ret = 0; + for (; r >= 0; r = (r & (r + 1)) - 1) + ret += bit[r]; + return ret; + } + + int sum(int l, int r) { + return sum(r) - sum(l - 1); + } + + void add(int idx, int delta) { + for (; idx < n; idx = idx | (idx + 1)) + bit[idx] += delta; + } +}; +