diff --git a/content/data-structures/range-queries/bit.cpp b/content/data-structures/range-queries/bit.cpp index 07dc208..012219e 100644 --- a/content/data-structures/range-queries/bit.cpp +++ b/content/data-structures/range-queries/bit.cpp @@ -7,8 +7,10 @@ struct fenwick_tree { vector bit; int n; fenwick_tree(int n): n(n) { bit.assign(n, 0); } fenwick_tree(vector &a): fenwick_tree(a.size()) { - for (size_t i = 0; i < a.size(); i++) - add(i, a[i]); + for (size_t i = 0; i < a.size(); i++) { + bit[i]+=a[i]; + if ((i|(i + 1)) < a.size()) bit[i|(i + 1)]+=bit[i]; + } } ll sum(int r) { ll ret = 0; @@ -23,4 +25,4 @@ struct fenwick_tree { for (; idx < n; idx = idx | (idx + 1)) bit[idx] += delta; } -}; \ No newline at end of file +};