测试了几次,开大数组也没用,一直有1~3个点RE,求大佬看看是怎么回事?
#include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;
int s[500010],n,m,ope,a,b;
int lowbit(int i)
{
return (i&(-i));
}
void add(int x,int k)
{
while(x<=n)
{
s[x]+=k;
x+=lowbit(x);
}
}
int sum(int x)
{
int su=0;
while(x)
{
su+=s[x];
x-=lowbit(x);
}
return su;
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;++i)
{
scanf("%d",&ope);
add(i,ope);
}
while(m--)
{
scanf("%d%d%d",&ope,&a,&b);
if(ope==1)
add(a,b);
else
printf("%d\n",sum(b)-sum(a-1));
}
return 0;
}