--- tags: codebook --- {%hackmd theme-dark %} # BIT(Binary Index Tree) ```cpp= #include<vector> using namespace std; template<typename T> struct BIT { size_t size; vector<T> data; BIT(size_t s): size(s), data(size + 1, 0) {} inline void update(int i, int x) { i++; auto lowbit = [](auto x) {return x & -x;}; while (i <= int(size)) data[i] += x, i += lowbit(i); } inline int query(int i) { i++; int res = 0; auto lowbit = [](auto x) {return x & -x;}; while (i > 0) res += data[i], i -= lowbit(i); return res; } }; ```