Advertisement
Guest User

Untitled

a guest
Jan 15th, 2020
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.71 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdio>
  3. //#include <bits/stdc++.h>
  4.  
  5. using namespace std;
  6.  
  7. long long a[2000000];
  8. int n;
  9. void set(int i, long long x, int v, int l, int r) {
  10.     if (r - l == 1) {
  11.         a[v] = x;
  12.         return;
  13.     }
  14.     int m = (l + r) / 2;
  15.     if (i <= m) {
  16.         set(i, x, 2 * v + 1, l, m);
  17.     }
  18.     else {
  19.         set(i, x, 2 * v + 2, m, r);
  20.     }
  21.     a[v] = a[2 * v  + 1] + a[2 * v + 2];
  22. }
  23.  
  24. long long sum(int L, int R, long long v, int l, int r) {
  25.     if (R <= l || r <= L) {
  26.         return 0L;
  27.     }
  28.     if (l >= L && r <= R) {
  29.         //cout << a[v] << " ";
  30.         return a[v];
  31.     }
  32.     int m = (l + r) / 2;
  33.     long long sl = sum(L, R, 2 * v + 1, l, m);
  34.     long long sr = sum(L, R, 2 * v + 2, m, r);
  35.     return sl + sr;
  36. }
  37.  
  38. int main() {
  39.     cin >> n;
  40.     int b = 1;
  41.     while (n > b) {
  42.         b *= 2;
  43.     }
  44.     long long k = 0;
  45.     for (int i = 0; i < n; i++) {
  46.         cin >> k;
  47.         //cin >> a[b - 1 + i];
  48.         set(i + 1, k, 0, 0, b);
  49.     }
  50.     /*cout << sum(0, b, 0, 0, b) << endl;
  51.     for (int i = 0; i < 2 * b - 1; i++) {
  52.         cout << a[i] << " ";
  53.     }*/
  54.     string str;
  55.     while (cin >> str) {
  56.         //cout << str << endl;
  57.         if (str[1] == 'u') {
  58.             int x, y;
  59.             cin >> x >> y;
  60.             //cout << x << " " << y << endl;
  61.             cout << sum(x, y + 1, 0, 1, b + 1) << endl;
  62.         }
  63.         if (str[1] == 'e') {
  64.             int x;
  65.             long long y;
  66.             cin >> x >> y;
  67.            // cout << x << " " << y << endl;
  68.             set(x, y, 0, 0, b);
  69.             /*for (int i = 0; i < 2 * b - 1; i++) {
  70.                 cout << a[i] << " ";
  71.             }*/
  72.         }
  73.     }
  74.     return 0;
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement