Untitled
unknown
c_cpp
6 months ago
4.0 kB
3
Indexable
#include <bits/stdc++.h> //───▐▀▄──────▄▀▌───▄▄▄▄▄▄▄ #define ll long long //───▌▒▒▀▄▄▄▄▀▒▒▐▄▀▀▒██▒██▒▀▀▄•.,¸,.•*`•.,¸¸,.•*¯ •.,¸,.•*`•.,¸¸,.•*¯ •.,¸,.•*`•.,¸¸,.•*¯ #define f first //──▐▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▀▄•.,¸,.•*`•.,¸¸,.•*¯ •.,¸,.•*`•.,¸¸,.•*¯ •.,¸,.•*`•.,¸¸,.•*¯ #define s second //──▌▒▒▒▒▒▒▒▒▒▒▒▒▒▄▒▒▒▒▒▒▒▒▒▒▒▒▒▀▄•.,¸,.•*`•.,¸¸,.•*¯ •.,¸,.•*`•.,¸¸,.•*¯ •.,¸,.•*`•.,¸¸,.•*¯ #define pb push_back //▀█▒▒█▌▒▒█▒▒▐█▒▒▀▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▌•.,¸,.•*`•.,¸¸,.•*¯ •.,¸,.•*`•.,¸¸,.•*¯ •.,¸,.•*`•.,¸¸,.•*¯ #define ub upper_bound //▀▌▒▒▒▒▒▀▒▀▒▒▒▒▒▀▀▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐ ▄▄•.,¸,.•*`•.,¸¸,.•*¯ •.,¸,.•*`•.,¸¸,.•*¯ •.,¸,.•*`•.,¸¸,.•*¯ #define lb lower_bound //▐▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▄█▒█•.,¸,.•*`•.,¸¸,.•*¯ •.,¸,.•*`•.,¸¸,.•*¯ •.,¸,.•*`•.,¸¸,.•*¯ #define np next_permutation//▐▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒█▀•.,¸,.•*`•.,¸¸,.•*¯ •.,¸,.•*`•.,¸¸,.•*¯ •.,¸,.•*`•.,¸¸,.•*¯ #define us unordered_set //──▐▄▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▄▌•.,¸,.•*`•.,¸¸,.•*¯ •.,¸,.•*`•.,¸¸,.•*¯ •.,¸,.•*`•.,¸¸,.•*¯ #define cont continue //────▀▄▄▀▀▀▀▄▄▀▀▀▀▀▀▄▄▀▀▀▀▀▀▄▄▀•.,¸,.•*`•.,¸¸,.•*¯ •.,¸,.•*`•.,¸¸,.•*¯ •.,¸,.•*`•.,¸¸,.•*¯ #define IOS ios_base::sync_with_stdio(0),cin.tie(0) #define INF INFINITY #define ull unsigned long long #define maxel(begin, end) *std::max_element(begin, end) #define minel(begin, end) *std::min_element(begin, end) using namespace std; //* fin fin fin *// //* fin fin fin *// //* fin fin fin *// //* fin fin fin *// //* travske skot *// ll MAXN = 3*1e7; vector<ll> t(MAXN, -1); vector<bool> marked(MAXN, 0); struct node{ ll l, r, x; }; void push(ll v) { if (marked[v]) { t[2 * v] = t[2 * v + 1] = t[v]; t[v] = -1; marked[2 * v] = marked[2 * v + 1] = true; marked[v] = false; } } void upd(ll v, ll tl, ll tr, ll l, ll r, ll x) { if (l > r) return; if (l == tl && r == tr/* && tl != x*/) { t[v] = x; marked[v] = true; } else { ll tm = (tl + tr) / 2; push(v); upd(2 * v, tl, tm, l, min(r, tm), x); upd(2 * v + 1, tm + 1, tr, max(l, tm + 1), r, x); } } void get(ll v, ll tl, ll tr, ll p) { if (t[v] > -1) { cout << t[v] << ' '; return; } if (tl == tr) return; ll tm = (tl + tr) / 2; if (p <= tm) get(2 * v, tl, tm, p); else get(2 * v + 1, tm + 1, tr, p); } void sett(ll v, ll tl, ll tr, ll p) { if (tl == tr) { t[v] = 0; return; } ll tm = (tl + tr) / 2; if (p <= tm) sett(2 * v, tl, tm, p); else sett(2 * v + 1, tm + 1, tr, p); } int main() { IOS; ll n, m; cin >> n >> m; vector<node> tests(3*m); for (ll i = 1; i <= m; i++) { cin >> tests[i].l >> tests[i].r >> tests[i].x; } for (ll i = m; i > 0; i--) { upd(1, 1, n, tests[i].x+1, tests[i].r, tests[i].x); upd(1, 1, n, tests[i].l, tests[i].x-1, tests[i].x); } sett(1,1,n,tests[m].x); for (ll i = 1; i <= n; i++) { get(1, 1, n, i); } }
Editor is loading...
Leave a Comment