Quetzal-CoaTL
The Coalescence Template Library
Loading...
Searching...
No Matches
BIT.hpp
1
class
BIT
2
{
3
private
:
4
vector<int> data;
5
6
public
:
7
BIT
(vector<int> nums)
8
{
9
data.resize(nums.size() + 1);
10
for
(
int
i = 0; i < nums.size(); ++i)
11
{
12
add(i, nums[i]);
13
}
14
}
15
16
BIT
(
int
n)
17
{
18
data.resize(n + 1);
19
}
20
21
// add the value val to index i
22
void
add(
int
i,
int
val)
23
{
24
++i;
25
while
(i < data.size())
26
{
27
data[i] += val;
28
i += (i & (-i));
29
}
30
}
31
32
// get the prefix sum from 0 to i
33
int
sum(
int
i)
34
{
35
++i;
36
int
v = 0;
37
while
(i)
38
{
39
v += data[i];
40
i -= (i & (-i));
41
}
42
return
v;
43
}
44
45
// get the range sum between [i, j]
46
int
queryRange(
int
i,
int
j)
47
{
48
return
sum(j) - sum(i - 1);
49
}
50
};
BIT
Definition
BIT.hpp:2
src
include
quetzal
utils
BIT.hpp
Generated by
1.9.8