DSA
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

60 lines
1.2 KiB

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int n , m , add[1200004],t[1200004],l[300003],r[300003],x[300003];
  4. void push(int v , int tl ,int tr)
  5. {
  6. if(add[v] != 0)
  7. {
  8. if(tl != tr)
  9. add[v * 2] = add[v] ,
  10. add[v * 2 + 1] = add[v] ;
  11. t[v] = add[v] ;
  12. add[v] = 0 ;
  13. }
  14. }
  15. void update(int v,int tl, int tr , int l,int r ,int x)
  16. {
  17. push(v,tl,tr) ;
  18. if(tl > r || tr < l || l > r){
  19. return ;
  20. }
  21. if(l <= tl && tr <= r)
  22. {
  23. add[v] = x ;
  24. push(v,tl,tr) ;
  25. return ;
  26. }
  27. int mid = (tl + tr) / 2 ;
  28. update(v * 2 , tl , mid , l ,r , x);
  29. update(v * 2 + 1, mid + 1, tr , l , r , x);
  30. }
  31. int get(int v , int tl ,int tr , int pos)
  32. {
  33. push(v,tl,tr) ;
  34. if(tl == tr)
  35. return t[v ];
  36. else
  37. {
  38. int mid = (tl + tr) / 2 ;
  39. if(pos <= mid)
  40. get(v * 2, tl ,mid , pos) ;
  41. else
  42. get(v * 2 + 1, mid + 1, tr, pos) ;
  43. }
  44. }
  45. int main()
  46. {
  47. cin >> n >> m ;
  48. for(int i = 1 ; i <= m ; i++) cin >> l[i] >> r[i] >> x[i] ;
  49. for(int i = m ; i >= 1 ; i--)
  50. {
  51. update(1,1,n,x[i]+1,r[i],x[i]) ;
  52. update(1,1,n,l[i],x[i]-1,x[i]) ;
  53. }
  54. for(int i = 1; i <= n ; i++)
  55. cout << get(1,1,n,i) << ' ' ;
  56. }