树状数组
树状数组
#include<cstdio> #include<cstring> #include<cstdlib> #include<iostream> #include<algorithm> #include<cmath> #include<queue> using namespace std; const int MAX=100000+10; int N,X; int c[MAX]; void add(int x,int v) { while(x<=N) { c[x]+=v; x+=x&(-x); } } int ASK(int t) { int ans=0; while(t>=1) { ans+=c[t]; t-=t&(-t); } return ans; } int main() { scanf("%d",&N); for(int i=1;i<=N;i++) { scanf("%d",&X); add(i,X); } int m,x,y,z; scanf("%d",&m); for(int i=1;i<=m;i++) { scanf("%d%d%d",&x,&y,&z); if(x==1){ add(y,z); } else { cout << ASK(z)-ASK(y-1)<<endl; } } return 0; }