This documentation is automatically generated by online-judge-tools/verification-helper
#include "src/data-structure/BIT.hpp"1 点加算・区間和ができるデータ構造
BIT(ll n):長さ $n$ の配列を作るvoid add(ll i, ll x):A[i] += x を行うll sum(ll r):sum(A[:r]) を求めるll sum(ll l, ll r):sum(A[l:r]) を求める計算量 $O(\log n)$ / クエリ
struct BIT {
   vector<ll> a;
   BIT(ll n) : a(n + 1) {}
   void add(ll i, ll x) {  // A[i] += x
      i++;
      while(i < sz(a)) {
         a[i] += x;
         i += i & -i;
      }
   }
   ll sum(ll r) {
      ll s = 0;
      while(r) {
         s += a[r];
         r -= r & -r;
      }
      return s;
   }
   ll sum(ll l, ll r) {  // sum of A[l, r)
      return sum(r) - sum(l);
   }
};#line 1 "src/data-structure/BIT.hpp"
struct BIT {
   vector<ll> a;
   BIT(ll n) : a(n + 1) {}
   void add(ll i, ll x) {  // A[i] += x
      i++;
      while(i < sz(a)) {
         a[i] += x;
         i += i & -i;
      }
   }
   ll sum(ll r) {
      ll s = 0;
      while(r) {
         s += a[r];
         r -= r & -r;
      }
      return s;
   }
   ll sum(ll l, ll r) {  // sum of A[l, r)
      return sum(r) - sum(l);
   }
};