Submission #380346

#TimeUsernameProblemLanguageResultExecution timeMemory
380346ritul_kr_singh거래 (IZhO13_trading)C++17
100 / 100
446 ms41172 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define sp << ' ' << #define nl << '\n' struct segtree{ int sz = 1; vector<int> a; segtree(int n){ while(sz < n) sz *= 2; a.assign(2*sz, -1e18); } void update(int i, int val, int x, int lx, int rx){ if(rx-lx==1) return void(a[x] = val); int mx = (lx+rx)/2; if(i<mx) update(i, val, 2*x+1, lx, mx); else update(i, val, 2*x+2, mx, rx); a[x] = max(a[2*x+1], a[2*x+2]); } void update(int i, int val){ update(i, val, 0, 0, sz); } int get(){ return a[0]; } }; signed main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); int n, m; cin >> n >> m; int a[m], ans[n]; vector<int> starts[n], ends[n]; for(int i=0, l, r; i<m; ++i){ cin >> l >> r >> a[i]; starts[l-1].push_back(i); ends[r-1].push_back(i); } segtree st(m); for(int i=0; i<n; ++i){ for(int j : starts[i]) st.update(j, a[j]-i); ans[i] = max(0LL, st.get()+i); for(int j : ends[i]) st.update(j, -1e18); } for(int i : ans) cout << i << ' '; }
#Verdict Execution timeMemoryGrader output
Fetching results...