#include <iostream>
#include <iomanip>
#include <vector>
#include <cmath>
#include <algorithm>
#include <set>
#include <queue>
#include <map>
#include <unordered_map>
#include <stack>
#include <bitset>
#include <string>
#include <cstring>
#include <iterator>
#include <random>
#define ll long long
#define ld long double
#define inf (ll)(2*1e18)
#define sort(a) sort(a.begin(), a.end())
#define reverse(a) reverse(a.begin(), a.end())
#define pb push_back
#define endl "\n"
using namespace std;
void build(ll id, ll l, ll r, vector<ll>& a, vector<ll>& b){
if(l == r){
b[id] = a[l];
return;
}
ll m = (l+r)/2;
build(2*id, l, m, a, b);
build(2*id+1, m+1, r, a, b);
b[id] = min(b[2*id], b[2*id+1]);
}
ll get(ll id, ll l, ll r, ll tl, ll tr, vector<ll>& b){
if(r < tl or tr < l) return inf;
if(tl <= l and r <= tr){
return b[id];
}
ll m = (l+r)/2;
return min(get(2*id, l, m, tl, tr, b), get(2*id+1, m+1, r, tl, tr, b));
}
bool check(ll n, vector<ll>& ans, vector<vector<pair<ll, ll>>>& a){
vector<ll> b(4*n);
build(1, 0, n-1, ans, b);
for(int i=0;i<n;++i){
for(auto [l, r]: a[i]){
if(get(1, 0, n-1, l, r, b) != i){
return false;
}
}
}
return true;
}
void solve(){
ll n, q, i, l, r, res;
cin>>n>>q;
vector<vector<pair<ll, ll>>> a(n);
vector<vector<ll>> open(n);
vector<vector<ll>> close(n);
vector<ll> ans(n);
multiset<ll> s;
for(i=0;i<q;++i){
cin>>l>>r>>res;
a[res].pb({l, r});
open[l].pb(res);
close[r].pb(res);
}
s.insert(0);
for(i=0;i<n;++i){
for(auto el: open[i]){
s.insert(el);
}
ans[i] = *s.rbegin();
for(auto el: close[i]){
s.erase(s.find(el));
}
}
if(check(n, ans, a)){
for(i=0;i<n;++i){
cout<<ans[i]<<' ';
}
cout<<endl;
}else{
for(i=0;i<n;++i){
cout<<-1<<' ';
}
cout<<endl;
}
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
srand(time(nullptr));
ll t=1;
// cin>>t;
for(;t>0;--t){
solve();
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |