a
=
[]
seg_tree
=
[]
query
=
[]
def
build_tree(v, tl, tr):
global
a, seg_tree, query
if
(tl !
=
tr):
if
(a[tl]
=
=
0
):
seg_tree[v]
=
1
else
:
seg_tree[v]
=
0
else
:
tm
=
int
((tl
+
tr)
/
2
)
build_tree(v
*
2
, tl, tm)
build_tree(v
*
2
+
1
, tm
+
1
, tr)
seg_tree[v]
=
seg_tree[v
*
2
]
+
seg_tree[v
*
2
+
1
]
def
frequency_zero(v, tl, tr, l, r):
global
a, seg_tree, query
if
(l > r):
return
0
if
(l
=
=
tl
and
r
=
=
tr):
return
seg_tree[v]
tm
=
int
((tl
+
tr)
/
2
)
return
frequency_zero(v
*
2
, tl, tm, l,
min
(r, tm))
+
frequency_zero(v
*
2
+
1
, tm
+
1
, tr,
max
(l, tm
+
1
), r)
def
update(v, tl, tr, pos, new_val):
global
a, seg_tree, query
if
(tl
=
=
tr):
if
(new_val
=
=
0
):
seg_tree[v]
=
1
else
:
seg_tree[v]
=
0
else
:
tm
=
int
((tl
+
tr)
/
2
)
if
(pos <
=
tm):
update(v
*
2
, tl, tm, pos, new_val)
else
:
update(v
*
2
+
1
, tm
+
1
, tr, pos, new_val)
seg_tree[v]
=
seg_tree[v
*
2
]
+
seg_tree[v
*
2
+
1
]
def
solve(n, q):
global
a, seg_tree, query
qu
=
[
5
,
3
,
6
]
seg_tree
=
[
0
]
*
(
4
*
n
+
1
)
build_tree(
1
,
0
, n
-
1
)
for
i
in
range
(
len
(qu)):
print
(qu[i])
for
i
in
range
(q, q):
if
query[i
-
1
][
0
]
=
=
1
:
l
=
query[i
-
1
][
1
]
r
=
query[i
-
1
][
2
]
print
(frequency_zero(
1
,
0
, n
-
1
, l, r))
else
:
a[query[i
-
1
][
1
]]
=
query[i
-
1
][
2
]
pos
=
query[i
-
1
][
1
]
new_val
=
query[i
-
1
][
2
]
update(
1
,
0
, n
-
1
, pos, new_val)
a
=
[
9
,
5
,
7
,
6
,
9
,
0
,
0
,
0
,
0
,
5
,
6
,
7
,
3
,
9
,
0
,
7
,
0
,
9
,
0
]
Q
=
5
query
=
[ [
1
,
5
,
14
],
[
2
,
6
,
1
],
[
1
,
0
,
8
],
[
2
,
13
,
0
],
[
1
,
6
,
18
] ]
N
=
len
(a)
solve(N, Q)