Advertisement
midnight_sun

Untitled

Nov 15th, 2022
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.58 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. #define fastio ios_base::sync_with_stdio(false); cin.tie(NULL);
  3. using namespace std;
  4. typedef long long int lli;
  5. lli make_tree(vector<lli>& arr, vector<lli>& segtree, lli node, lli start, lli end) {
  6.     if (start == end) return segtree[node] = arr[start];
  7.     lli mid = (start + end) / 2;
  8.     return segtree[node] = make_tree(arr, segtree, node * 2, start, mid) + make_tree(arr, segtree, node * 2 + 1, mid + 1, end);
  9.  
  10. }
  11. void change_tree(vector<lli>& segtree, lli node, lli start, lli end, lli idx, lli update) {
  12.     if (idx<start || idx>end) return;
  13.     segtree[node] += update;
  14.     if (start == end) return;
  15.     lli mid = (start + end) / 2;
  16.     change_tree(segtree, node * 2, start, mid, idx, update);
  17.     change_tree(segtree, node * 2 + 1, mid + 1, end, idx, update);
  18. }
  19. lli sum_tree(vector<lli>& segtree, lli node, lli start, lli end, lli left, lli right) {
  20.     if (left > end || right < start) return 0;
  21.     if (left <= start && end <= right) return segtree[node];
  22.     lli mid = (start + end) / 2;
  23.     return sum_tree(segtree, node * 2, start, mid, left, right) + sum_tree(segtree, node * 2 + 1, mid + 1, end, left, right);
  24. }
  25. int main() {
  26.     fastio;
  27.     lli n, m, k;
  28.     cin >> n >> m >> k;
  29.     vector<lli> arr(n);
  30.     vector<lli> segtree(4 * n);
  31.     for (lli a, i = 0; i < n; i++) cin >> arr[i];
  32.     make_tree(arr, segtree, 1, 0, n - 1);
  33.     for (lli a, b, c, i = 0; i < m + k; i++) {
  34.         cin >> a >> b >> c;
  35.         if (a == 1) {
  36.             lli dif = c - arr[b - 1];
  37.             arr[b - 1] = c;
  38.             change_tree(segtree, 1, 0, n - 1, b - 1, dif);
  39.         }
  40.         else {
  41.             cout << sum_tree(segtree, 1, 0, n - 1, b - 1, c - 1) << "\n";
  42.         }
  43.     }
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement