#include<cstdio> #include<iostream> #include<algorithm> using namespace std; int total[500005]; int n,m; int lowbit(int x) { return(~x+1)&x; } void add(int i,int x) { while(i<=n) { total[i] += x; i+=lowbit(i); } } int sum(int x) { int ans=0; while(x!=0) { ans+=total[x]; x-=lowbit(x); } return ans; } int main(void) { cin >> n >> m; for(int i = 1;i<=n;i++) { int x; cin >> x; add(i,x); } while(m--) { int a; cin >> a; if(a == 1) { int x,y; cin >> x >> y; add(x,y); } if(a == 2) { int x,y; cin >> x >> y; int ans = sum(y) - sum(x-1); cout << ans << endl; } } return 0; }
原文:https://www.cnblogs.com/loliconsk/p/14612109.html