Lang:G++
Edit123456789101112131415161718#include<cstdio>#define mid (l+r>>1)#define pd(o,l,r) tag[o<<1]=tag[o<<1|1]=tag[o],sum[o<<1]=tag[o]*(mid-l+1),sum[o<<1|1]=tag[o]*(r-mid),tag[o]=0int ans,sum[263000],tag[263000],v,n,q,op,x,y,i,aa;char ch;int F(){while(ch=getchar(),ch<'0'||ch>'9');aa=ch-48;while(ch=getchar(),ch>='0'&&ch<='9')aa=aa*10+ch-48;return aa;}void bt(int o,int l,int r){l==r?sum[o]=F():(bt(o<<1,l,mid),bt(o<<1|1,mid+1,r),sum[o]=sum[o<<1]+sum[o<<1|1]);}void update(int o,int l,int r){x<=l&&r<=y?tag[o]=v,sum[o]=v*(r-l+1):(tag[o]?pd(o,l,r),1:1,x<=mid?update(o<<1,l,mid),1:1,mid<y?update(o<<1|1,mid+1,r),1:1,sum[o]=sum[o<<1]+sum[o<<1|1]);}void query(int o,int l,int r){x<=l&&r<=y?ans+=sum[o]:(tag[o]?pd(o,l,r),1:1,x<=mid?query(o<<1,l,mid),1:1,mid<y?query(o<<1|1,mid+1,r),1:1);}int main(){for(bt(1,1,n=F()),q=F();q--;op=F(),x=F(),y=F(),op?v=F(),update(1,1,n),1:(ans=0,query(1,1,n),printf("%d\n",ans)));}