Advertisement
ssrtatarin

Untitled

Jan 8th, 2022
15
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.89 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, mod = 1e9 + 7;
  8. const int N = 1e6;
  9. #define all(a) a.begin(),a.end()
  10. #define _GLIBCXX_DEBUG
  11.  
  12. ll a[N], u[N], tree[N];
  13.  
  14. void build(ll l, ll r, ll v) {
  15. if (l == r) {
  16. tree[v] = a[l];
  17. return;
  18. }
  19. ll m = (l + r) / 2;
  20. build(l, m, v + v);
  21. build(m + 1, r, v + v + 1);
  22. tree[v] = tree[v + v]+ tree[v + v + 1];
  23. }
  24.  
  25. void push(ll l, ll r, ll v) {
  26. if (u[v]==-1)
  27. return;
  28. tree[v] = u[v]*(r-l+1);
  29. if (l == r) {
  30. u[v] = -1;
  31. return;
  32. }
  33. u[v + v] = u[v];
  34. u[v + v + 1] = u[v];
  35. u[v] = -1;
  36. }
  37.  
  38. void change(ll l, ll r, ll v, ll la, ll ra, ll x) {
  39. push(l, r, v);
  40. if (l > ra || r < la)
  41. return;
  42. if (l >= la && r <= ra) {
  43. u[v] = x;
  44. push(l, r, v);
  45. return;
  46. }
  47. ll m = (l + r) / 2;
  48. change(l, m, v + v, la, ra, x);
  49. change(m + 1, r, v + v + 1, la, ra, x);
  50. tree[v] = tree[v + v]+tree[v + v + 1];
  51. }
  52.  
  53. ll ans(ll l, ll r, ll v, ll la, ll ra) {
  54. push(l, r, v);
  55. if (l > ra || r < la)
  56. return 0;
  57. if (l >= la && r <= ra)
  58. return tree[v];
  59. ll m = (l + r) / 2;
  60. return ans(l, m, v + v, la, ra) + ans(m + 1, r, v + v + 1, la, ra);
  61. }
  62.  
  63. int main() {
  64. #ifdef anime
  65.  
  66. freopen("input1.txt", "r", stdin);
  67. freopen("outpu1.txt", "w", stdout);
  68. #endif
  69. srand(time(nullptr));
  70. ios_base::sync_with_stdio(false);
  71. cin.tie(nullptr);
  72. cout.tie(nullptr);
  73. ll n, k;
  74. cin >> n;
  75. cin >> k;
  76. build(1, n, 1);
  77.  
  78. while (k--) {
  79. char c;
  80. cin >> c;
  81. ll x, y;
  82. cin >> x >> y;
  83. if (c == 'A') {
  84. ll z;
  85. cin >> z;
  86. change(1, n, 1, x, y, z);
  87. } else
  88. cout << ans(1, n, 1, x, y) << '\n';
  89. }
  90. }
  91.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement