1 #include2 #include 3 #include 4 #define mem(a,b) memset(a,b,sizeof(a)); 5 using namespace std; 6 typedef long long ll; 7 const int maxn = 500005; 8 const ll INF = 0x3f3f3f3f; 9 int n,m;10 ll a[maxn];11 ll lowbit(ll t) { //取出t的最低位112 return t&(-t);13 }14 ll getsum(ll x) {15 ll ans = 0;16 for(int i = x; i > 0; i -= lowbit(i)) {17 ans += a[i];18 }19 return ans;20 }21 void update(ll x,ll v) {22 for(int i = x; i <= n; i+=lowbit(i)) {23 a[i] += v;24 }25 }26 int main()27 {28 29 cin >> n >> m;30 ll c;31 for(int i = 1; i <= n; i++) {32 cin >> c;33 update(i,c);34 }35 int op;36 ll x,y,z;37 for(int i = 1; i <= m; i++) {38 cin >> op;39 if(op == 1) {40 cin >> x >> z;41 update(x,z);42 }43 else {44 cin >> x >> y;45 cout << getsum(y) - getsum(x-1) << endl;46 }47 }48 return 0;49 }