#include<iostream> #include<cstdio> using namespace std; #define lb(x) x&(-x) #define maxn 500001 int z[maxn],n,m; inline int read() { int k=0,f=1;char c=getchar(); for(;!isdigit(c);c=getchar()) if(c==‘-‘) f=-1; for(;isdigit(c);c=getchar()) k=k*10+c-‘0‘; return k*f; } inline void insert(int x,int y) { for(;x<=n;x+=lb(x)) z[x]+=y; } inline int query(int x) { int ans=0; for(;x;x-=lb(x)) ans+=z[x]; return ans; } int main() { n=read(); m=read(); for(int i=1;i<=n;i++) { int x; x=read(); insert(i,x); } for(int i=1;i<=m;i++) { int s,l,r; s=read(); l=read(); r=read(); if(s==1) insert(l,r); else cout<<query(r)-query(l-1)<<‘\n‘; } return 0; }
原文:https://www.cnblogs.com/kojoker/p/12534829.html