- 玄关求调
玄关求调0001
- @ 2025-8-28 16:23:11
P3374
using namespace std;
const int N = 100005;
int a[N];
int c[N];
int n,m;
//返回前x个整数之合
int get(int x) {
int res = 0;
while (x) {
res += c[x];
x -= x & (-x);
}
return res;
}
//将a[x]加上v
void change(int x, int v)
{//必须能够取到最大值
while(x <= n) {
c[x] += v;
x += x & (-x);
}
}
int main(){
//初始化n log n
cin>>n>>m;
for(int i = 1; i <= n; i++){
cin>>a[i];
change(i, a[i]);
}
for(int i = 1; i <= m; i++){
int op,a,b;
cin>>op>>a>>b;
if(op==1){
change(a,b);
}else{
cout<<get(b)-get(a-1)<<endl;
}
}
return 0;
}
@w132326820