Advertisement
ssrtatarin

Untitled

Jan 8th, 2022
14
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.64 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. typedef __int128 lll;
  5. typedef long long ll;
  6. typedef double ld;
  7. ll inf = 1e9+1, mod = 1e9 + 7;
  8. const int N = 1e6;
  9. #define all(a) a.begin(),a.end()
  10. #define pb push_back
  11. #define _GLIBCXX_DEBUG
  12.  
  13. struct test
  14. {
  15. ll l, r, ind;
  16. };
  17. std::vector<test>arr;
  18.  
  19. ll a[N], u[N*4], tree[N*4];
  20.  
  21. bool compare(test a, test b){
  22. if(a.ind != b.ind) return a.ind < b.ind;
  23. else if(a.l != b.l) return a.l < b.l;
  24. else return a.r < b.r;
  25. }
  26.  
  27. void build(ll l, ll r, ll v) {
  28. if (l == r) {
  29. tree[v] = a[l];
  30. return;
  31. }
  32. ll m = (l + r) / 2;
  33. build(l, m, v + v);
  34. build(m + 1, r, v + v + 1);
  35. tree[v] = min(tree[v + v], tree[v + v + 1]);
  36. }
  37.  
  38. void push(ll l, ll r, ll v) {
  39. if (u[v]==-inf)
  40. return;
  41. tree[v] = u[v];
  42. if (l == r) {
  43. u[v] = -inf;
  44. return;
  45. }
  46. u[v + v] = u[v];
  47. u[v + v + 1] = u[v];
  48. u[v] = -inf;
  49. }
  50.  
  51. void change(ll l, ll r, ll v, ll la, ll ra, ll x) {
  52. push(l, r, v);
  53. if (l > ra || r < la)
  54. return;
  55. if (l >= la && r <= ra) {
  56. u[v] = x;
  57. push(l, r, v);
  58. return;
  59. }
  60. ll m = (l + r) / 2;
  61. change(l, m, v + v, la, ra, x);
  62. change(m + 1, r, v + v + 1, la, ra, x);
  63. tree[v] = min(tree[v + v],tree[v + v + 1]);
  64. }
  65.  
  66. ll ans(ll l, ll r, ll v, ll la, ll ra) {
  67. push(l, r, v);
  68. if (l > ra || r < la)
  69. return inf;
  70. if (l >= la && r <= ra)
  71. return tree[v];
  72. ll m = (l + r) / 2;
  73. return min(ans(l, m, v + v, la, ra),ans(m + 1, r, v + v + 1, la, ra));
  74. }
  75.  
  76.  
  77. void dfs(ll v, ll tl, ll tr){
  78. if(tl!=tr){
  79. ll m = (tl+tr)/2;
  80. dfs(v+v, tl, m);
  81. dfs(v+v+1, m+1, tr);
  82. }
  83. else cout << tree[v] << ' ';
  84. }
  85.  
  86. int main() {
  87. #ifdef anime
  88.  
  89. freopen("input1.txt", "r", stdin);
  90. freopen("outpu1.txt", "w", stdout);
  91. #endif
  92. srand(time(nullptr));
  93. ios_base::sync_with_stdio(false);
  94. cin.tie(nullptr);
  95. cout.tie(nullptr);
  96. ll n, k;
  97. cin >> n;
  98. cin >> k;
  99. build(1, n, 1);
  100. while (k--) {
  101.  
  102. ll x, y;
  103. cin >> x >> y;
  104. ll z;
  105. cin >> z;
  106.  
  107. arr.pb({x,y,z});
  108. }
  109. sort(arr.begin(), arr.end(), compare);
  110. for(int i = 0; i < arr.size(); ++i){
  111. ll x = arr[i].l, y = arr[i].r, z = arr[i].ind;
  112. change(1, n, 1, x, y, z);
  113. }
  114.  
  115. for(int i = 0; i < arr.size(); ++i){
  116. ll na = ans(1, n, 1, arr[i].l, arr[i].r);
  117. ll nb = arr[i].ind;
  118. if(na!=nb){
  119. cout << "inconsistent";
  120. return 0;
  121. }
  122. }
  123. cout << "consistent" << '\n';
  124. dfs(1, 1, n);
  125.  
  126.  
  127. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement