Advertisement
Guest User

Untitled

a guest
Sep 25th, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.54 KB | None | 0 0
  1. //КСС
  2.  
  3. #include <iostream>
  4. #include <vector>
  5. #include <algorithm>
  6. #include <cmath>
  7. #include <set>
  8. #include <stack>
  9. #include <iterator>
  10. #include <stdio.h>
  11. #include <string>
  12. #include <queue>
  13. #include <unordered_set>
  14. #include <unordered_map>
  15. #include <map>
  16. #include <ctime>
  17. using namespace std;
  18.  
  19. typedef long long ll;
  20. typedef long double ld;
  21.  
  22.  
  23. vector<int> tree;
  24. vector<int> add;
  25.  
  26. void push(int id, int curl, int curr) {
  27. if(add[id] == 1e9) {
  28. return;
  29. }
  30. if(curl == curr) {
  31. tree[id] = add[id];
  32. add[id] = 1e9;
  33. return;
  34. }
  35. add[id*2] = add[id];
  36. add[id*2+1] = add[id];
  37. add[id] = 1e9;
  38. }
  39.  
  40. void setLR(int id, int curl, int curr, int l, int r, int val) {
  41. push(id, curl, curr);
  42. if( curr < l || curl > r) {
  43. return;
  44. }
  45. if(curl >= l && curr <= r) {
  46. add[id] = val;
  47. push(id, curl, curr);
  48. return;
  49. }
  50. int m = (curl + curr)/2;
  51. setLR(2*id, curl, m, l, r, val);
  52. setLR(2*id+1, m+1, curr, l, r, val);
  53. }
  54.  
  55. void updateForStart(int id, int curl, int curr, int x, int val) {
  56. if(curr < x|| curl > x) {
  57. return;
  58. }
  59. if(curl == x && curl == curr) {
  60. tree[id] = val;
  61. return;
  62. }
  63. int m = (curl+curr)/2;
  64. updateForStart(id*2, curl, m, x, val);
  65. updateForStart(id*2+1, m+1, curr, x, val);
  66. }
  67.  
  68. int gett(int id, int curl, int curr, int x) {
  69. push(id, curl, curr);
  70. if(curr < x|| curl > x) {
  71. return -1;
  72. }
  73. if(curl == x && curl == curr) {
  74. return tree[id];
  75. }
  76. int m = (curl+curr)/2;
  77. if(x >= curl && x <= m) {
  78. return gett(id*2, curl, m, x);
  79. } else {
  80. return gett(id*2+1, m+1, curr, x);
  81. }
  82. }
  83. int main() {
  84. cin.tie(0);
  85. cout.tie(0);
  86. ios_base::sync_with_stdio(false);
  87. int n;
  88. cin >> n;
  89. tree.resize(4*n);
  90. add.assign(4*n, 1e9);
  91. for(int i = 0; i < n; i++) {
  92. int a;
  93. cin >> a;
  94. updateForStart(1, 0, n-1, i, a);
  95. }
  96. int m;
  97. cin >> m;
  98. vector<int> ans;
  99. for(int i = 0; i < m; i++) {
  100. string s;
  101. cin >> s;
  102. if(s == "g") {
  103. int x;
  104. cin >> x;
  105. x--;
  106. ans.push_back(gett(1, 0, n-1, x));
  107. } else {
  108. int l, r, val;
  109. cin >> l >> r >> val;
  110. l--;
  111. r--;
  112. setLR(1, 0, n-1, l, r, val);
  113. }
  114. }
  115. for(int i = 0; i < ans.size(); i++) {
  116. cout << ans[i] << " ";
  117. }
  118.  
  119. return 0;
  120. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement