我用的是线段树,#2#9#10都RE,球debug,或者hack也好
#include<iostream>
using namespace std;
int n,m;
int a[10005],tree[40005],b[10005];
int build(int k,int l,int r)
{
if(l==r)
{
b[l]=k;
tree[k]=a[l];
return tree[k];
}
int mid=(l+r)/2;
tree[k]=build(k*2,l,mid)+build(k*2+1,mid+1,r);
return tree[k];
}
void change(int i,int n)
{
tree[i]+=n;
if(i==1)
{
return;
}
if(i%2==1)
{
change((i-1)/2,n);
}
else
{
change(i/2,n);
}
return;
}
int find(int k,int x,int y,int l,int r)
{
if(l<=x&&y<=r)
{
return tree[k];
}
if(l>y||r<x)
{
return 0;
}
int mid=(x+y)/2;
int ans=0;
ans+=find(k*2,x,mid,l,r);
ans+=find(k*2+1,mid+1,y,l,r);
return ans;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
build(1,1,n);
while(m--)
{
int t,x,y;
cin>>t>>x>>y;
if(t==1)
{
change(b[x],y);
}
else
{
cout<<find(1,1,n,x,y)<<endl;
}
}
return 0;
}