Advertisement
Manioc

Untitled

Sep 1st, 2019
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.41 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define MAXN 100005
  3. #define pii pair<int, int>
  4.  
  5. using namespace std;
  6.  
  7. long long segta[4 * MAXN];
  8. long long segtb[4 * MAXN];
  9.  
  10. long long query(long long (&segt)[4*MAXN], int id, int l, int r, int ql, int qr){
  11. if(ql <= l && r <= qr)
  12. return segt[id];
  13. if(qr < l || r < ql)
  14. return 0;
  15. int m = (r + l)/2;
  16. return query( segt, 2 * id, l, m, ql, qr) + query( segt, 2 * id + 1, m + 1, r, ql, qr);
  17. }
  18.  
  19. void update(long long (&segt)[4*MAXN], int id, int l, int r, int p, long long v, int lim){
  20. if(v > lim)
  21. v = lim;
  22. if(l == r)
  23. segt[id] = v;
  24. else{
  25. int m = (r + l)/2;
  26. if(p <= m)
  27. update(segt, 2 * id, l, m, p, v, lim);
  28. else
  29. update(segt, 2 * id + 1, m + 1, r, p, v, lim);
  30.  
  31. segt[id] = segt[id * 2] + segt[id * 2 + 1];
  32. }
  33. }
  34.  
  35. int main(){
  36. memset(segta, 0, 4 * MAXN);
  37. memset(segtb, 0, 4 * MAXN);
  38. int n, k, a, b, q, c, x, y;
  39. cin >> n >> k >> a >> b >> q;
  40.  
  41. for(int i = 0; i < q; i++){
  42. cin >> c;
  43.  
  44. if(c == 1){
  45. cin >> x >> y;
  46. update(segta, 1, 1, n, x, y, a);
  47. update(segtb, 1, 1, n, x, y, b);
  48. }
  49.  
  50. else{
  51. cin >> x;
  52. cout << query(segtb, 1, 1, n, 1, x - 1)
  53. + query(segta, 1, 1, n, x + k - 1, n) << endl;
  54. }
  55. }
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement