#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=2e5+10;
int n,f;
int a[N];
struct tr{
int l,r,sum,lazy;
}tree[N*4];
void pushup(int u){
tree[u].sum=tree[u<<1].sum+tree[u<<1|1].sum;
}
void build(int u,int l,int r){
tree[u].l=l;tree[u].r=r;
if(l==r){
tree[u].sum=a[l];
return;
}
int mid=(l+r)>>1;
build(u<<1,l,mid);
build(u<<1|1,mid+1,r);
pushup(u);
}
void pushdown(int u){
if(tree[u].lazy){
tree[u<<1].sum+=(tree[u<<1].r-tree[u<<1].l+1)*tree[u].lazy;
tree[u<<1|1].sum+=(tree[u<<1|1].r-tree[u<<1|1].l+1)*tree[u].lazy;
tree[u<<1].lazy+=tree[u].lazy;
tree[u<<1|1].lazy+=tree[u].lazy;
tree[u].lazy=0;
}
}
void modify(int u,int l,int r,int k){
if(l<=tree[u].l&&tree[u].r<=r){
tree[u].sum+=(tree[u].r-tree[u].l+1)*k;
tree[u].lazy+=k;
return;
}
pushdown(u);
int mid=(tree[u].l+tree[u].r)>>1;
if(l<=mid) modify(u<<1,l,r,k);
if(mid<r) modify(u<<1|1,l,r,k);
pushup(u);
}
void modify_dan(int u,int x,int k,int op){
if(tree[u].l==tree[u].r){
if(op) tree[u].sum+=k;
else tree[u].sum-=k;
return;
}
pushdown(u);
int mid=(tree[u].l+tree[u].r)>>1;
if(x<=mid) modify_dan(u<<1,x,k,op);
else modify_dan(u<<1|1,x,k,op);
pushup(u);
}
int query(int u,int l,int r){
if(l<=tree[u].l&&tree[u].r<=r){
return tree[u].sum;
}
pushdown(u);
int mid=(tree[u].l+tree[u].r)>>1;
int ans=0;
if(l<=mid) ans+=query(u<<1,l,r);
if(mid<r) ans+=query(u<<1|1,l,r);
return ans;
}
int query_dan(int u,int x){
if(tree[u].l==tree[u].r){
return tree[u].sum;
}
pushdown(u);
int mid=(tree[u].l+tree[u].r)>>1;
if(x<=mid) return query_dan(u<<1,x);
else return query_dan(u<<1|1,x);
}
signed main(){
scanf("%lld%lld",&n,&f);
for(int i=1;i<=n;i++) scanf("%lld",a+i);
build(1,1,n);
while(f--){
int op,x,y,k;
scanf("%lld",&op);
if(op==1){
scanf("%lld%lld",&x,&y,&k);
modify(1,x,y,k);
}else if(op==2){
scanf("%lld",&k);
modify_dan(1,1,k,1);
}else if(op==3){
scanf("%lld",&k);
modify_dan(1,1,k,0);
}else if(op==4){
scanf("%lld%lld",&x,&y);
printf("%lld\n",query(1,x,y));
}else if(op==5){
scanf("%lld",&x);
printf("%lld\n",query_dan(1,x));
}
}
return 0;
}
本人已经阵亡了,求打捞康康! orz
-(qwq)-