先安利
Wolves 歌手:Madilyn Bailey
代码
|
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 500005using 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;} |