遅延セグ木よりも定数倍速い。
参考にしたページ
Binary Indexed Tree のはなし - hos.ac
verify済み
Submission #70922924 - Codeforces
struct FenwickTree { vector<long long> v; int n; FenwickTree(int n) : n(n), v(n) {} void add(int i, long long x) { i++; while (i <= n) { v[i - 1] += x; i += i & -i; } } long long get(int i) { long long r = 0; while (i >= 1) { r += v[i - 1]; i -= i & -i; } return r; } }; struct ExFenwickTree { FenwickTree p, q; ExFenwickTree(int n) : p(n + 1), q(n + 1) {} void add(int l, int r, long long w) { p.add(l, -w * l); p.add(r, w * r); q.add(l, w); q.add(r, -w); } long long get(int r) { return p.get(r) + q.get(r) * r; } };