Untitled

 avatar
unknown
plain_text
5 months ago
4.3 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 = 4*1e5;
struct node {
    ll l, r, x;
};
vector<ll> t(MAXN, 0);
vector<ll> a(MAXN, 0);
vector<bool> marked(MAXN, 0);

void push(ll v, ll tl, ll tr) {
    if (a[v] == 0) return;
    if (tl != tr){
        a[v * 2] = a[v];
        a[v * 2 + 1] = a[v];
    }
    t[v] = a[v];
    a[v] = 0;
}

ll check(ll v, ll tl, ll tr, ll l, ll r) {
    push(v, tl, tr);
    if (r < tl || tr < l) {
        return LLONG_MAX;
    }
    if (l <= tl && tr <= r) {
        return t[v];
    }
    ll tm = (tl + tr) / 2;
    return min(check(v * 2, tl, tm, l, r), check(v * 2 + 1, tm + 1, tr, l, r));
}

void upd(ll v, ll tl, ll tr, ll l, ll r, ll x) {
    push(v, tl, tr);
    if (r < tl || tr < l) return;
    if (l <= tl && tr <= r) {
        a[v] = x;
        push(v, tl, tr);
    } else {
        ll tm = (tl + tr) / 2;
        upd(2 * v, tl, tm, l, r, x);
        upd(2 * v + 1, tm + 1, tr, l, r, x);
        t[v] = min(t[v * 2], t[v * 2 + 1]);
    }
}

int main() {
    /*freopen("rmq.in", "r", stdin);
    freopen("rmq.out", "w", stdout);*/
    IOS;
    ll n, m;
    cin >> n >> m;
    vector<pair<ll, pair<ll, ll>>> q;

    for (int i = 0; i < m; i++){
        int adil1, adil2, adil3;
        cin >> adil1 >> adil2 >> adil3;
        q.pb({adil3, {adil1, adil2}});
    }
    sort(q.begin(), q.end());
    for (int i = 0; i < q.size(); i++) upd(1, 1, n, q[i].s.f, q[i].s.s, q[i].f);
    
    for (int i = 0; i < q.size(); i++) {
        if (check(1, 1, n, q[i].s.f, q[i].s.s) == q[i].f) {
            continue;
        } else {
            cout << "inconsistent" << endl;
            return 0;
        }
    }
    

    cout << "consistent\n";
    for (int i = 1; i <= n; i++) cout << check(1, 1, n, i, i) << ' ';
    
    //cout << q[0].s.f;
}
Editor is loading...
Leave a Comment