70分,求助
查看原帖
70分,求助
1061050
jiangyunuo楼主2025/1/22 20:17
#include<bits/stdc++.h>
using namespace std;
int n,m;
int a[50005];
int lowbit(int i){
	return (-i)&i;
}
int sum(int i){
	int s=0;
	for(;i>0;i-=lowbit(i)){
	    s+=a[i];
	}
	return s;
}
void add(int x,int y){
	for(int i=x;i<=n;i+=lowbit(i))a[i]+=y;
}
int summ(int x,int y){
	return sum(y)-sum(x-1);
}
int low(int a){
	int ans=0;
	while(a%2==0){
		ans++;
		a/=2;
	}
	return ans;
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	for(int i=1;i<=n;i++){
		if(i+lowbit(i)<=n)a[i+lowbit(i)]+=a[i];
	}
	int op,x,y;
	for(int i=1;i<=m;i++){
		cin>>op>>x>>y;
		if(op==1)add(x,y);
		if(op==2)cout<<summ(x,y)<<endl;
	}
    return 0;
}
2025/1/22 20:17
加载中...