rt
#include <stdio.h>
#include <iostream>
using namespace std;
#define N 500005
int n, m;
int c[N];
int lowbit (int x) {return x & -x;}
void update (int x, int y) {
for (; x <= n; x += lowbit (x)) {
c[x] += y;
}
}
int query (int x) {
int ans = 0;
for (; x; x -= lowbit (x)) {
ans += c[x];
}
return ans;
}
int main () {
cin >> n >> m;
for (int i = 1; i <= n; ++i) {
int v;
cin >> v;
update (i, v);
}
while (m--) {
int op, x, y;
cin >> op >> x >> y;
if (op == 1) {
update (x, y);
} else {
cout << query (y) - query (x - 1) << endl;
}
}
return 0;
}
https://www.luogu.com.cn/record/154850219
#include <stdio.h>
#include <iostream>
using namespace std;
#define N 500005
int n, m;
int a[N], b[N], c[N];
int lowbit (int x) {return x & -x;}
void init () {
for (int i = 1; i <= n; ++i) {
b[i] = b[i - 1] + a[i];
c[i] = b[i] - b[i - lowbit (i)];
}
}
void update (int x, int y) {
for (; x <= n; x += lowbit (x)) {
c[x] += y;
}
}
int query (int x) {
int ans = 0;
for (; x; x -= lowbit (x)) {
ans += c[x];
}
return ans;
}
int main () {
cin >> n >> m;
for (int i = 1; i <= n; ++i) {
cin >> a[i];
}
init ();
while (m--) {
int op, x, y;
cin >> op >> x >> y;
if (op == 1) {
update (x, y);
} else {
cout << query (y) - query (x - 1) << endl;
}
}
return 0;
}