Advertisement
leminhkt

81

Sep 30th, 2020
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.00 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4.  
  5. const short LOVE = 1411;
  6. const int N = 1e5;
  7. typedef long long ll;
  8.  
  9.  
  10. int n;
  11. ll t[2*N];
  12.  
  13.  
  14. void update(int l, int r, ll x) {
  15.     for (l += n, r += n + 1; l < r; l >>= 1, r >>= 1) {
  16.         if (l&1) t[l++] += x;
  17.         if (r&1) t[--r] += x;
  18.     }
  19. }
  20.  
  21.  
  22. ll get(int i) {
  23.     ll res = t[i += n];
  24.     while (i >>= 1) res += t[i];
  25.     return res;
  26. }
  27.  
  28.  
  29. int main(){
  30.     //freopen("Test.INP", "r", stdin);
  31.     //freopen("Test.OUT", "w", stdout);
  32.     cin.tie(NULL)->sync_with_stdio(false);
  33.  
  34.  
  35.     int k; cin >> n >> k;
  36.  
  37.  
  38.     for (int i = 0; i < n; ++i) cin >> t[n + i];
  39.  
  40.  
  41.     int ans = 0;
  42.     for (int i = 0; i < n - 1; ++i) ans += t[n + i] > t[n + i + 1];
  43.  
  44.  
  45.     for (int i = 0; i < k; ++i) {
  46.         int l, r; ll x; cin >> l >> r >> x;
  47.         --l, --r;
  48.         if (r + 1 < n) ans -= get(r) > get(r + 1);
  49.         if (l - 1 >= 0) ans -= get(l - 1) > get(l);
  50.         update(l, r, x);
  51.         if (r + 1 < n) ans += get(r) > get(r + 1);
  52.         if (l - 1 >= 0) ans += get(l - 1) > get(l);
  53.         cout << ans << ' ';
  54.     }
  55.  
  56.  
  57.     return 0;
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement