#include<stdio.h>
#include<iostream>
#include<string.h>
#define maxn 101000
#define mem(a,b) memset(a,b,sizeof(a))
#define lowbit(x) x&(-x)
#define sf scanf
#define pf printf
using namespace std;
int n,q,num;
int c[maxn];
void update(int i,int x){
for(;i<=n;i+=lowbit(i)) c[i]+=x;
}
int sum(int a){
int s=0;
for(int i=a;i>0;i-=lowbit(i)) s+=c[i];
return s;
}
int main(){
freopen("a.txt","r",stdin);
sf("%d",&n);
for(int i=1;i<=n;i++){
int x;
scanf("%d",&x);
update(i,x);
}
scanf("%d",&q);
while(q--){
scanf("%d",&num);
if(num==1){
int a,b,c;
sf("%d%d%d",&a,&b,&c);
for(int i=a;i<=b;i++) update(i,c);//区间更新
}
else{
int a;
sf("%d",&a);
pf("%d\n",sum(a)-sum(a-1));
}
}
return 0;
}
树状数组区间更新
最新推荐文章于 2022-08-30 21:29:03 发布