Untitled
unknown
c_cpp
a year ago
4.0 kB
5
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