This documentation is automatically generated by competitive-verifier/competitive-verifier
#include "data-structure/binary-indexed-tree/BinaryIndexedTree.hpp"
todo
todo
template <class T>
struct fenwick_tree {
public:
fenwick_tree() : _n(0) {}
explicit fenwick_tree(int n) : _n(n), data(n) {}
void add(int p, T x) {
p++;
while (p <= _n) {
data[p - 1] += x;
p += p & -p;
}
}
T sum(int l, int r) {
return sum(r) - sum(l);
}
private:
int _n;
vector<T> data;
T sum(int r) {
T s = 0;
while (r > 0) {
s += data[r - 1];
r -= r & -r;
}
return s;
}
};
#line 1 "data-structure/binary-indexed-tree/BinaryIndexedTree.hpp"
template <class T>
struct fenwick_tree {
public:
fenwick_tree() : _n(0) {}
explicit fenwick_tree(int n) : _n(n), data(n) {}
void add(int p, T x) {
p++;
while (p <= _n) {
data[p - 1] += x;
p += p & -p;
}
}
T sum(int l, int r) {
return sum(r) - sum(l);
}
private:
int _n;
vector<T> data;
T sum(int r) {
T s = 0;
while (r > 0) {
s += data[r - 1];
r -= r & -r;
}
return s;
}
};