diff --git a/Data Structures/fenwick_tree_2d b/Data Structures/fenwick_tree_2d new file mode 100644 index 0000000..ad2e101 --- /dev/null +++ b/Data Structures/fenwick_tree_2d @@ -0,0 +1,21 @@ +class fenwick_tree_2d { +private: int N, M, vector> FT; +public: + fenwick_tree_2d(int n, int m) { + N = n + 1, M = m + 1; + FT.resize(N, 0); + for (int i = 0; i < N; i++) FT[i].resize(M, 0); + } + void update(int x, int y, int val) { + for (int i = x; i < N; i += i & -i) { + for (int j = y; j < M; j += j & -j) FT[i][j] += val; + } + } + int query(int x, int y) { + int ret = 0; + for (int i = x; i > 0; i -= i & -i) { + for (int j = y; j > 0; j -= j & -j) ret += FT[i][j]; + } + return ans; + } +}