树状数组
复习基础!!
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll c[1000010], n, q;
ll lowbit(ll x){
return x&(-x);
}
void updata(ll x, ll v){
for(ll k=x; k<=n; k+=lowbit(k))
c[k] += v;
}
ll getSum(ll x){
ll sum=0;
for(ll k=x; k>0; k-=lowbit(k))
sum += c[k];
return sum;
}
int main(){
scanf("%lld%lld", &n, &q);
for(ll i=1; i<=n; i++){
ll tmp;
scanf("%lld", &tmp);
updata(i, tmp);
}
while(q--){
ll x, y, z;
scanf("%lld%lld%lld", &x, &y, &z);
if(x==1)
updata(y, z);
else
printf("%lld\n", getSum(z)-getSum(y-1));
}
return 0;
}