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

1 条评论

  • 1