rt,蒟蒻想不明白为什么会 RE
orz
#include<bits/stdc++.h>
#define ls (t[i].l)
#define rs (t[i].r)
using namespace std;
const int N=5e5+10;
struct xds{int l,r,w;};
vector<xds>t={{0,0,0}};int cnt=0;
void push(int i){t[i].w=t[ls].w+t[rs].w;}
void ins(int q,int k,int l,int r,int &i)
{
if(!i) i=++cnt,t.push_back({0,0,0});
if(q==l&&l==r) {t[i].w+=k;return;}
int mid=(l+r)>>1;
if(q<=mid) ins(q,k,l,mid,ls);
else ins(q,k,mid+1,r,rs);
push(i);
}
int ask(int q,int w,int l,int r,int i)
{
if(!i) return 0;
if(q<=l&&r<=w) return t[i].w;
int mid=(l+r)>>1,ans=0;
if(q<=mid) ans+=ask(q,w,l,mid,ls);
if(w>mid) ans+=ask(q,w,mid+1,r,rs);
return ans;
}
int a[N];
int main()
{
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
int n,m,op,k,x,gen=0;
cin>>n>>m;
for(int i=1;i<=n;++i) cin>>a[i],ins(i,a[i],1,n,gen);
while(m--)
{
cin>>op>>x>>k;
if(op==1) ins(x,k,1,n,gen);
else cout<<ask(x,k,1,n,gen)<<'\n';
}
return 0;
}