Wolves 歌手:Madilyn Baileyc++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
#include<bits/stdc++.h>
#define MAXN 500005
using
namespace
std;
int
read(){
int
x=0,t=1;
char
c=
getchar
();
while
(c<
'0'
||c>
'9'
){
if
(c==
'-'
)t=-1;c=
getchar
();}
while
(c>=
'0'
&&c<=
'9'
){x=x*10+c-
'0'
;c=
getchar
();}
return
x*t;
}
int
N,M,T[MAXN*4],Q;
void
Build_tree(){
for
(M=1;M<N;M<<=1);
for
(
int
i=M+1;i<=M+N;i++)T[i]=read();
for
(
int
i=M-1;i;i--)T[i]=T[i<<1]+T[i<<1|1];
}
void
Add(
int
x,
int
v){
for
(T[x=M+x]+=v,x>>=1;x;x>>=1)
T[x]=T[x<<1]+T[x<<1|1];
}
long
long
Query(
int
l,
int
r){
long
long
sum=0;
for
(l=l+M-1,r=r+M+1;l^r^1;l>>=1,r>>=1){
if
(~l&1)sum+=T[l^1];
if
( r&1)sum+=T[r^1];
}
return
sum;
}
int
main(){
N=read(),Q=read();
Build_tree();
while
(Q--){
int
a=read(),b=read(),c=read();
if
(a==1)Add(b,c);
else
printf
(
"%lld\n"
,Query(b,c));
}
return
0;
}
|