代码
#include<cstdio>
#include<iostream>
using namespace std;
long long c[500001];
int n,m,v,x,k,h,gjr;
int lowbit(int n){
return n&(-n);
}
long long pa(int u){
long long ans=0;
for(int i=u;i;i-=lowbit(i))
ans+=c[i];
return ans;
}
void add(int a,int h){
for(int i=a;i<=n;i+=lowbit(i))
c[i]+=h;
}
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
int x;
scanf("%d",&x);
add(i,x-gjr);
gjr=x;
}
for(int i=1;i<=m;i++){
scanf("%d%d",&v,&x);
if(v==1){
scanf("%d%d",&k,&h);
add(x,h);
add(k+1,-h);
}
if(v==2)
printf("%lld\n",pa(x));
}
return 0;
}
add里面的for从一到500000就不对,从一到n就对了
不懂awa