#include<bits/stdc++.h>
#define did_AK_IOI 500005
using namespace std;
int n,m,c[did_AK_IOI];
int lowbit(int x)
{
return x&(-x);
}
int sum(int x)
{
int ans=0;
for(int i=x;i>0;i-=lowbit(i))
ans+=c[i];
return ans;
}
void update(int x,int d)
{
for(int i=x;i<=n;i+=lowbit(i))
c[i]+=d;
return ;
}
int main()
{
int a,b,t;
bool f;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>t;
update(i,t);
}
while(m--)
{
// cout<<m<<" ";
cin>>f>>a>>b;
// cout<<m<<" ";
if(f==2) cout<<sum(b)-sum(a-1)<<endl;
else update(a,b);
}
return 0;
}
然后
#include<bits/stdc++.h>
#define did_AK_IOI 500005
using namespace std;
int n,m,c[did_AK_IOI];
int lowbit(int x)
{
return x&(-x);
}
int sum(int x)
{
int ans=0;
for(int i=x;i>0;i-=lowbit(i))
ans+=c[i];
return ans;
}
void update(int x,int d)
{
for(int i=x;i<=n;i+=lowbit(i))
c[i]+=d;
return ;
}
int main()
{
int a,b,t,f;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>t;
update(i,t);
}
while(m--)
{
// cout<<m<<" ";
cin>>f>>a>>b;
// cout<<m<<" ";
if(f==2) cout<<sum(b)-sum(a-1)<<endl;
else update(a,b);
}
return 0;
}