제출 #340192

#제출 시각아이디문제언어결과실행 시간메모리
340192amunduzbaev거래 (IZhO13_trading)C++14
100 / 100
466 ms11756 KiB
/** made by amunduzbaev **/ #include <bits/stdc++.h> //~ #include <ext/pb_ds/assoc_container.hpp> //~ #include <ext/pb_ds/tree_policy.hpp> //~ #include <ext/rope> //~ using namespace __gnu_pbds; //~ using namespace __gnu_cxx; using namespace std; #define ff first #define ss second #define pb push_back #define mp make_pair #define ub upper_bound #define lb lower_bound #define ll long long #define ld long double #define pii pair<int, int> #define pll pair<ll, ll> #define sz(x) (int)x.size() #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(),x.rend() #define fastios ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define vll vector<ll> #define vii vector<int> #define vpii vector<pii> #define vpll vector<pll> #define cnt(a)__builtin_popcount(a) template<class T> bool umin(T& a, const T& b) {return a > b? a = b, true:false;} template<class T> bool umax(T& a, const T& b) {return a < b? a = b, true:false;} //~ typedef tree<pii,null_type,less<pii>,rb_tree_tag,tree_order_statistics_node_update> ordered_set; const int N = 3e5+5; const int mod = 1e9+7; const ll inf = 1e18; const ld Pi = acos(-1); int s, n, m, k, t, ans[N]; struct node{ int lx, rx; }; node tree[4*N]; void prop(int x, int lx, int rx){ if(!tree[x].lx || lx == rx) return ; int mid = (tree[x].lx + tree[x].rx)/2; umax(tree[x*2].lx, tree[x].lx); umax(tree[x*2].rx, mid); umax(tree[x*2+1].lx, mid+1); umax(tree[x*2+1].rx, tree[x].rx); tree[x].lx = tree[x].rx = 0; } int cur; void update(int l, int r, int lx, int rx, int x){ prop(x, lx, rx); if(lx > r || rx < l) return ; if(lx >= l && rx <= r){ umax(tree[x].lx, cur); umax(tree[x].rx, cur + (rx-lx+1)-1); cur += (rx-lx+1); prop(x, lx, rx); return; } int mid = (lx + rx)/2; update(l, r, lx, mid, x*2); update(l, r, mid+1, rx, x*2+1); } void tmprop(int x, int lx, int rx){ if(!tree[x].lx) { if(lx == rx) return; tmprop(x*2, lx, (lx + rx)/2); tmprop(x*2+1, (lx + rx)/2+1, rx); return; } if(lx == rx){ umax(ans[lx-1], tree[x].lx); return; } int mid = (tree[x].lx + tree[x].rx)/2; umax(tree[x*2].lx, tree[x].lx); umax(tree[x*2].rx, mid); umax(tree[x*2+1].lx, mid+1); umax(tree[x*2+1].rx, tree[x].rx); tree[x].lx = tree[x].rx = 0; tmprop(x*2, lx, (lx + rx)/2); tmprop(x*2+1, (lx + rx)/2+1, rx); } void solve(){ int m; cin>>n>>m; s = 2; while(s < n) s<<=1; for(int i=0;i<m;i++){ int l, r, x; cin>>l>>r>>x; cur = x; update(l, r, 1, s, 1); } tmprop(1, 1, s); for(int i=0;i<n;i++){ cout<<ans[i]<<" "; }cout<<"\n"; return; } int main(){ fastios int t = 1; if(t) solve(); else { cin>>t; while (t--) solve(); } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...