liwenxi114514 @ 2024-04-04 16:43:47
#include<bits/stdc++.h>
#define int long long
#define ls k<<1
#define rs k<<1|1
#define pup tree[k].maxn=max(tree[ls].maxn,tree[rs].maxn)
#define qmi int mid=(tree[k].l+tree[k].r)>>1
using namespace std;
int n,m,a[1000005];
struct node{
int l,r,maxn,fgtag,smtag;
}tree[4000005];
inline void build(int l,int r,int k){
tree[k].l=l;
tree[k].r=r;
if(l==r){
tree[k].maxn=a[l];
tree[k].fgtag=1e9+1;
return ;
}
qmi;
build(l,mid,ls);
build(mid+1,r,rs);
pup;
}
inline void coverpd(int k){
if(tree[k].fgtag!=1e9+1){
tree[ls].smtag=tree[rs].smtag=0;
tree[ls].maxn=tree[rs].maxn=tree[k].fgtag;
tree[ls].fgtag=tree[rs].fgtag=tree[k].fgtag;
tree[k].fgtag=1e9+1;
}
return ;
}
inline void sumpd(int k){
if(tree[k].smtag){
coverpd(k);
tree[ls].maxn+=tree[k].smtag;
tree[rs].maxn+=tree[k].smtag;
tree[ls].smtag+=tree[k].smtag;
tree[rs].smtag+=tree[k].smtag;
tree[k].smtag=0;
}
return ;
}
inline void update1(int l,int r,int x,int k){
if(tree[k].l<=l&&tree[k].r>=r){
tree[k].fgtag=x;
tree[k].smtag=0;
tree[k].maxn=x;
return ;
}
coverpd(k);
sumpd(k);
qmi;
if(l<=mid){
update1(l,r,x,ls);
}
if(r>mid){
update1(l,r,x,rs);
}
pup;
return ;
}
inline void update2(int l,int r,int x,int k){
if(tree[k].l<=l&&tree[k].r>=r){
coverpd(k);
tree[k].maxn+=x;
tree[k].smtag+=x;
return ;
}
coverpd(k);
sumpd(k);
qmi;
if(l<=mid){
update2(l,r,x,ls);
}
if(r>mid){
update2(l,r,x,rs);
}
pup;
return ;
}
inline int query(int l,int r,int k){
if(tree[k].l<=l&&tree[k].r>=r){
return tree[k].maxn;
}
coverpd(k);
sumpd(k);
qmi;
int maxn=INT_MIN;
if(l<=mid){
maxn=max(maxn,query(l,r,ls));
}
if(r>mid){
maxn=max(maxn,query(l,r,rs));
}
return maxn;
}
signed main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=4*n;i++){
tree[i].fgtag=1e9+1;
}
build(1,n,1);
while(m--){
int id;
cin>>id;
if(id==1){
int x,y,z;
cin>>x>>y>>z;
update1(x,y,z,1);
}else if(id==2){
int x,y,z;
cin>>x>>y>>z;
update2(x,y,z,1);
}else{
int x,y;
cin>>x>>y;
cout<<query(x,y,1)<<"\n";
}
}
return 0;
}
by liwenxi114514 @ 2024-04-08 17:23:35
@sto_0616allen_orz
by sto_0616allen_orz @ 2024-04-08 21:32:20
@liwenxi114514 我敲,找我干嘛?找这个神犇@LHQ_lihongqian