Submission #1304324

#TimeUsernameProblemLanguageResultExecution timeMemory
1304324domiTrading (IZhO13_trading)C++20
100 / 100
208 ms18560 KiB
#include <bits/stdc++.h> #define int long long #define fi first #define se second #define sz(a) (int)((a).size()) #define all(a) (a).begin(), (a).end() #define lsb(x) (x & (-x)) #define vi vector<int> #define YES { cout << "Yes" << endl; return; } #define NO { cout << "No" << endl; return; } using ll = long long; using pii = std::pair<int, int>; const int NMAX = 3e5; using namespace std; int n, m; struct Seg { int aint[4 * NMAX + 5]; int lazy[4 * NMAX + 5]; void build(int nod = 1, int st = 1, int dr = n) { if (st == dr) { aint[nod] = INT_MIN; lazy[nod] = INT_MIN; return; } int m = (st + dr) >> 1; build(2 * nod, st, m); build(2 * nod + 1, m + 1, dr); aint[nod] = max(aint[2 * nod], aint[2 * nod + 1]); lazy[nod] = INT_MIN; } void push(int nod, int st, int dr) { if (lazy[nod] != INT_MIN) { aint[nod] = max(aint[nod], lazy[nod]); if (st != dr) { lazy[2 * nod] = max(lazy[2 * nod], lazy[nod]); lazy[2 * nod + 1] = max(lazy[2 * nod + 1], lazy[nod]); } lazy[nod] = INT_MIN; } } void chmax(int l, int r, int v, int nod = 1, int st = 1, int dr = n) { push(nod, st, dr); if (st > r || dr < l) return; if (l <= st && dr <= r) { lazy[nod] = max(lazy[nod], v); push(nod, st, dr); return; } int m = (st + dr) >> 1; chmax(l, r, v, 2 * nod, st, m); chmax(l, r, v, 2 * nod + 1, m + 1, dr); aint[nod] = max(aint[2 * nod], aint[2 * nod + 1]); } int query(int l, int r, int nod = 1, int st = 1, int dr = n) { push(nod, st, dr); if (st > r || dr < l) return INT_MIN; if (l <= st && dr <= r) return aint[nod]; int m = (st + dr) >> 1; return max(query(l, r, 2 * nod, st, m), query(l, r, 2 * nod + 1, m + 1, dr)); } }aint; signed main() { cin.tie(nullptr)->sync_with_stdio(false); cin >> n >> m; aint.build(); for (int i = 0, l, r, x; i < m; ++i) { cin >> l >> r >> x; aint.chmax(l, r, x - l); } for (int i = 1; i <= n; ++i) { int ret = aint.query(i, i); cout << (ret == INT_MIN ? 0 : ret + i) << " \n"[i == n]; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...