#include<cstdio>
#include<algorithm>
#include<cstring>
typedef long long ll;
#define N 100010
using namespace std;
struct node
{
ll l,r,lz,sum;
}t[*N];
ll read()
{
ll ret=,neg=;
char j=getchar();
for (;j>'' || j<'';j=getchar())
if (j=='-') neg=-;
for (;j<='' && j>='';j=getchar())
ret=ret*+j-'';
return ret*neg;
}
ll n,q,a[N],l,r,k;
void pushup(ll p)
{
t[p].sum=t[*p].sum+t[*p+].sum;
}
void pushdown(ll p)
{
if (t[p].l==t[p].r || t[p].lz==) return;
ll tmp=t[p].lz,mid=(t[p].r+t[p].l)>>;
t[*p].sum+=(mid-t[p].l+)*tmp;
t[*p+].sum+=(t[p].r-mid)*tmp;
t[*p].lz+=tmp;
t[*p+].lz+=tmp;
t[p].lz=;
}
void build(ll p,ll l,ll r)
{
t[p].l=l,t[p].r=r;
if (l!=r)
{
ll mid=l+r>>;
build(*p,l,mid);
build(*p+,mid+,r);
pushup(p);
}
else
t[p].sum=a[l];
}
void modify(ll p,ll l,ll r,ll k)
{
ll L=t[p].l,R=t[p].r,mid=(L+R)>>;
if (l==L && r==R)
{
t[p].sum+=(r-l+)*k;
t[p].lz+=k;
return ;
}
pushdown(p);
if (r<=mid)
modify(*p,l,r,k);
else if (l>mid)
modify(*p+,l,r,k);
else modify(*p,l,mid,k),modify(*p+,mid+,r,k);
pushup(p);
}
ll query(ll p,ll l,ll r)
{
ll L=t[p].l,R=t[p].r,mid=(L+R)>>;
if (l==L && r==R)
return t[p].sum;
pushdown(p);
if (r<=mid)
return query(*p,l,r);
if (l>mid) return query(*p+,l,r);
return query(*p,l,mid)+query(*p+,mid+,r);
}
char op[N];
int main()
{
n=read(),q=read();
for (int i=;i<=n;i++)
a[i]=read();
build(,,n);
while (q--)
{
scanf("%s",op);
if (op[]=='Q')
l=read(),r=read(),printf("%lld\n",query(,l,r));
else l=read(),r=read(),k=read(),modify(,l,r,k);
}
return ;
}

最新文章

  1. Maven 代理设置
  2. &lt;&lt;&lt; 判断提交方式是get还是post
  3. jquery 事件冒泡的介绍以及如何阻止事件冒泡
  4. python-基础介绍
  5. Cordova webapp实战开发:(2)认识一下Cordova
  6. android 中layer-list的用法
  7. 06 SQL执行计划
  8. jq获取表单值与赋值代码
  9. lintcode 中等题:A + B Problem A + B 问题
  10. java下载文件
  11. c#操作appsettiongs
  12. V离MWare至Openstack至FDIO
  13. xml类型转换列表显示 SQL查询
  14. mysql获取当前时间,前一天,后一天
  15. 在Ubuntu上安装Jenkins
  16. 010_动态语言与鸭子类型及python2和3的区别
  17. java压缩图片质量
  18. mysql更新表中日期字段时间
  19. [ovs] openvswitch 入门
  20. webuploader在ie7下的flash模式的使用

热门文章

  1. IDEA的使用方法(二)(代码提示)
  2. Windows API窗口绘图程序设计
  3. 【Codebase】JQuery获取表单部分数据提交方法
  4. Laravel系列 Web
  5. P1297 网线切割
  6. com.squareup.okhttp.Interceptor
  7. pdo事务
  8. linux压缩和解压缩命令大全--费元星站长
  9. java.math.BigDecimal cannot be cast to java.lang.String解决方法
  10. linux统计分析流量-wireshark