0分求调(样例都过不了,根本不输出)
查看原帖
0分求调(样例都过不了,根本不输出)
636008
blackmonkey楼主2023/7/26 14:01

(这题耗了我2个月都没找到问题)

#include <bits/stdc++.h>
using namespace std;
long long n,m,a[500010],b[500001];
long long lowbit(int x){
	return x & (-x);
}
void add(int j,int x)
{
	for(int i=j;i<=n;i+=lowbit(i))
		b[i]+=x;
}
long long sum(int j)
{
	int ans=0;
	for(int i=j;i>0;i-=lowbit(i))
		ans+=b[i];
    return ans;
}
int main(){
	cin >> n >> m;
	for(int i=1;i<n;++i){
		cin >> a[i];
		add(i,a[i]);
	}
	
	for(int i=1;i<=m;++i){
		int id,x,y;
		cin >> id >> x >> y;
		if(id==1)
  		{
  			add(x,y);
  		}
  		if(id==2)
  		{
  			printf("%lld\n",sum(y)-sum(x-1));
  		}
	}
} 
2023/7/26 14:01
加载中...