样例没过,求调
感觉自己废了(本人很懒)
#include <iostream>
#include <cstdio>
using namespace std;
//x-(x&(x-1))
int n,m,b[(int)1e6]={0};
int a[(int)1e6]={0};
int c(int number){
return number-(number&(number-1));
}
void build(){
for(int i=1;i<=n;i++)a[i]=b[i]-b[i-c(i)];
return ;
}
int query(long long x){
int i=x;
long long sum=0;
while(i){
sum+=a[i];
i-=c(i);
}
return sum;
}
void add(int x,int y){
int i=x;
while(i<=n){
a[i]+=y;
i+=c(i);
}
return ;
}
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)scanf("%d",&b[i]),b[i]+=b[i-1];
int u,x,y;
for(int i=0;i<m;i++){
scanf("%d%d%d",&u,&x,&y);
if(u==1)add(x,y);
else printf("%d",query(y)-query(x-1));
}
return 0;
}
然而我确实废了