fork download
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. typedef long long ll;
  6. typedef pair<int, int> ii;
  7.  
  8. const int INF = 1e9;
  9. const ll LINF = 1e18;
  10.  
  11. const int N = 3e5 + 5;
  12.  
  13. int n, m;
  14.  
  15. int nxt[N];
  16.  
  17. void init() {
  18. for (int u = 1; u <= n + 1; u++) nxt[u] = u;
  19. }
  20.  
  21. // Tìm v gần bên phải u nhất (tính cả u) sao cho v chưa bị đánh dấu
  22. int findNext(int u) {
  23. if (nxt[u] == u) return u;
  24. return nxt[u] = findNext(nxt[u]);
  25. }
  26.  
  27. int ans[N];
  28.  
  29. int main() {
  30. ios::sync_with_stdio(false);
  31. cin.tie(nullptr);
  32. cin >> n >> m;
  33.  
  34. init();
  35.  
  36. for (int i = 1; i <= m; i++) {
  37. int l, r, x;
  38. cin >> l >> r >> x;
  39.  
  40. for (int i = findNext(l); i < x; i = findNext(i + 1)) {
  41. ans[i] = x;
  42. nxt[i] = findNext(i + 1);
  43. }
  44.  
  45. for (int i = findNext(x + 1); i <= r; i = findNext(i + 1)) {
  46. ans[i] = x;
  47. nxt[i] = findNext(i + 1);
  48. }
  49. }
  50.  
  51. for (int i = 1; i <= n; i++) {
  52. cout << ans[i] << " \n"[i == n];
  53. }
  54. }
Success #stdin #stdout 0.01s 5696KB
stdin
4 3
1 2 1
1 3 3
1 4 4
stdout
3 1 4 0