题目链接
#include
#include
#include
using namespace std;
#define int long long
const int N = 100010;
int n,m;
int a[N],tr1[N],tr2[N];
int lowbit(int x)
{
return x&-x;
}
void add(int tr[],int x,int v)
{
for(int i=x;i<=n;i+=lowbit(i))tr[i]+=v;
}
int sum(int tr[],int x)
{
int res=0;
for(int i=x;i;i-=lowbit(i))res+=tr[i];
return res;
}
int pre_sum(int x)
{
return sum(tr1,x)*(x+1)-sum(tr2,x);
}
signed main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)cin>>a[i];
for(int i=1;i<=n;i++)
{
int b=a[i]-a[i-1];
add(tr1,i,b);
add(tr2,i,b*i);
}
while (m -- )
{
char c;
cin>>c;
if(c=='Q')
{
int l,r;
cin>>l>>r;
cout<>l>>r>>v;
add(tr1,l,v);add(tr1,r+1,-v);
add(tr2,l,v*l);add(tr2,r+1,-(r+1)*v);
}
}
}