# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1270069 | parim55 | Wall (IOI14_wall) | C++20 | 0 ms | 0 KiB |
#include <bits/stdc++.h>
#include <ctime>
#include <random>
#define fu(i,a,b) for(ll i = a; i < b; i++)
#define fd(i,a,b) for(ll i = a; i >= b; i--)
#define pb push_back
#define ll long long
#define fi first
#define se second
#define inf 1000000000000000000
#define bit(x,y) ((x >> y)&1)
#define MASK(x) (1 << x)
#define ALL(x) (x).begin(), (x).end()
#define vi pair<ll,ll>
#define vvl vector<vector<ll>>
#define vvvi pair<ll,pair<ll,pair<ll,ll>>>
using namespace std;
const ll MAXN = 2e5+2;
const ll MAXC = 1e6+5;
const ll base = 31;
const ll MOD = 1e9+7;
const ll LG = 30;
const ll BS = 560;
const ll dx[] = {0,1,0,-1,-1,-1,1,1};
const ll dy[] = {1,0,-1,0,1,-1,1,-1};
bool minimize(ll& a,const ll& b){ if(a > b){ a = b; return true; } else return false; }
bool maximize(ll& a,const ll& b){ if(a < b){ a = b; return true; } else return false; }
void add(ll& a,const ll& b){ a += b; if(a >= MOD) a -= MOD; }
ll sub(ll a,ll b){ ll r = a - b + MOD; if(r >= MOD) r -= MOD; return r;}
vi lz[MAXN*4],t[MAXN*4];
ll n,q;
void fix(ll id,ll l,ll r){
t[id].fi = max(t[id].fi,lz[id].fi);
t[id].se = max(t[id].se,t[id].fi);
t[id].se = min(t[id].se,lz[id].se);
t[id].fi = min(t[id].se,t[id].fi);
if(l != r){
lz[id*2].fi = max(lz[id].fi,lz[id*2].fi);
lz[id*2].se = min(lz[id].se,lz[id*2].se);
lz[id*2+1].fi = max(lz[id].fi,lz[id*2+1].fi);
lz[id*2+1].se = min(lz[id].se,lz[id*2+1].se);
}
lz[id] = {0,inf};
}
void update(ll id,ll l,ll r,ll u,ll v,vi x){
fix(id,l,r);
if(l > v || r < u) return;
if(l >= u && r <= v){
lz[id].fi = max(lz[id].fi,x.fi);
lz[id].se = min(lz[id].se,x.se);
fix(id,l,r);
return;
}
ll mid = l+r >> 1;
update(id*2,l,mid,u,v,x);
update(id*2+1,mid+1,r,u,v,x);
}
ll get(ll id,ll l,ll r,ll pos){
fix(id,l,r);
if(l == r) return t[id].fi;
else{
ll mid = l+r >> 1;
if(pos <= mid) return get(id*2,l,mid,pos);
else return get(id*2+1,mid+1,r,pos);
}
}
void solve(){
cin >> n >> q;
fu(id,1,4*n+1){
lz[id].fi = t[id].fi = 0;
lz[id].se = t[id].se = inf;
}
while(q--){
ll op,l,r,h; cin >> op >> l >> r >> h;
l++;r++;
if(op == 1) update(1,1,n,l,r,{h,inf});
else update(1,1,n,l,r,{0,h});
}
fu(i,1,n+1) cout << get(1,1,n,i) << ' ';
}
signed main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
// freopen("searoutes.INP","r",stdin);
// freopen("searoutes.OUT","w",stdout);
// freopen("code.inp","r",stdin);
// freopen("code.out","w",stdout);
ll t = 1;
while(t--) solve();
return 0;
}