Ethereal_KQ @ 2024-07-26 15:57:37
#include<bits/stdc++.h>
using namespace std;
#define N 5444231
int t1[N],t2[N],n,m;
int lowbit(int x){return x& -x;}
void add1(int x,int d){
while(x<=n)
t1[x]+=d,
x+=lowbit(x);
}
void add2(int x,int d){
while(x<=n)
t2[x]+=d,
x+=lowbit(x);
}
int cx1(int x){
int res=0;
while(x>0)
res+=t1[x],
x-=lowbit(x);
return res;
}
int cx2(int x){
int res=0;
while(x>0)
res+=t2[x],
x-=lowbit(x);
return res;
}
int main(){
cin>>n>>m;
int temp=0,a;
for(int i=1;i<=n;i++){
cin>>a;
add1(i,a-temp);
add2(i,(i-1)*(a-temp));
temp=a;
}
int op,l,r,d;
while(m--){
cin>>op;
if(op==1){
cin>>l>>r>>d;
add1(l,d);
add1(r+1,-d);
add2(l,d*(l-1));
add2(r+1,-d*r);
}
else{
cin>>l>>r;
cout<<r*cx1(r)-cx2(r)-(l-1)*cx1(l-1)-cx2(l-1)<<"\n";
}
}
return 0;
}
by Ethereal_KQ @ 2024-07-26 16:04:46
.