样例输出为 14 17(应为14 16)不知道哪里有问题
查看原帖
样例输出为 14 17(应为14 16)不知道哪里有问题
938642
zhoujinhan101116楼主2025/1/24 09:57
#include<bits/stdc++.h>
using namespace std;
const int maxn=5e5+5;
int f[maxn];
int n,m,p,x,y,k;
int lowbit(int i)
{
	return i&(-i);
}
void add(int b,int a)
{
	for(;b<=n;b+=lowbit(b))
	{
		f[b]+=a;
	}
}
int sum(int y)
{
	int ans=0;
	for(;y;y-=lowbit(y))
	ans+=f[y];
	return ans;
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
	int a;
		cin>>a;
		add(a,i);
	}
	for(int i=1;i<=m;i++)
   {
   	cin>>p;
   	if(p==1) 
   	{
	   	cin>>x>>k;
	   	add(x,k);
    }
    else if(p==2)
    {
		cin>>x>>y;
		cout<<sum(y)-sum(x-1)<<endl;
	}
   	
   }
	return 0;
}
2025/1/24 09:57
加载中...