模板题,代码如下
#include <iostream>
using namespace std;
const int N = 1e5 + 10;
int tr[N], n, m;
int lowbit(int x){
return x & -x;
}
int query(int x){
int sum = 0;
for(int i = x; i; i -= lowbit(i))
sum += tr[i];
return sum;
}
void updata(int x, int v){
for(int i = x; i <= n; i += lowbit(i))
tr[i] += v;
}
int ask(int l, int r){
return query(r) - query(l - 1);
}
int main()
{
cin >> n >> m;
for(int i = 1; i <= n; ++i)
{
int v;
cin >> v;
updata(i, v);
}
while(m--)
{
int op, a, b;
cin >> op >> a >> b;
if(op)
updata(a, b);
else
cout << ask(a, b) << endl;
}
return 0;
}