单点修改区间查询的模版,但在loj有一个点过不了
这是loj的记录
#include<bits/stdc++.h>
#define lowbit(x) ((x)&(-x))
using namespace std;
const int Maxn=1e6;
long long read(){
long long ans=0,c=1; char p=getchar();
while(!isdigit(p)) { if(p=='-') c=-1; p=getchar(); }
while( isdigit(p)) { ans=(ans<<3)+(ans<<1)+p-'0'; p=getchar(); }
return ans*c;
}
int n,q; long long tree[Maxn];
void update(int x,long long k){
while(x<=n) tree[x]+=k, x+=lowbit(x);
}
long long query(int x){
long long res=0;
while(x>0) res+=tree[x], x-=lowbit(x);
return res;
}
int opt,l; long long r;
int main(){
n=read(); q=read();
for(int i=1;i<=n;i++) {
r=read();
update(i,r);
}
while(q--){
opt=read(); l=read(); r=read();
if(opt==1) update(l,r);
if(opt==2) printf("%lld\n",query(r)-query(l-1));
}
return 0;
}
help!