This documentation is automatically generated by competitive-verifier/competitive-verifier
#include "src/ds/ft.hpp"template <typename T>
struct FenwickTree {
int n;
vector<T> c;
FenwickTree(int n) : n(n), c(n) {}
void add(int pos, T x) {
for (int i = pos + 1; i <= n; i += i & -i) c[i - 1] += x;
}
T pref(int r) const {
T ret = 0;
for (int i = r; i > 0; i -= i & -i) ret += c[i - 1];
return ret;
}
T sum(int l, int r) const { return pref(r) - pref(l); }
};
#line 1 "src/ds/ft.hpp"
template <typename T>
struct FenwickTree {
int n;
vector<T> c;
FenwickTree(int n) : n(n), c(n) {}
void add(int pos, T x) {
for (int i = pos + 1; i <= n; i += i & -i) c[i - 1] += x;
}
T pref(int r) const {
T ret = 0;
for (int i = r; i > 0; i -= i & -i) ret += c[i - 1];
return ret;
}
T sum(int l, int r) const { return pref(r) - pref(l); }
};