georgiy110802

Untitled

Aug 8th, 2021
1,254
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.13 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. #include <vector>
  4.  
  5. using namespace std;
  6.  
  7. #define int long long
  8.  
  9. void upd(const int i, const int x, const int len, vector<int> &sum, vector<int> &a){
  10.     sum[i / len] += -a[i] + x;
  11.     a[i] = x;
  12. }
  13.  
  14. int summ(const int l, const int r, const int len, vector<int> &sum, vector<int> &a){
  15.     int ans = 0;
  16.     for (int i = l; i <= r;) {
  17.         if (i % len == 0 && i + len < r) {
  18.             ans += sum[i / len];
  19.             i += len;
  20.         } else {
  21.             ans += a[i];
  22.             ++i;
  23.         }
  24.     }
  25.     return ans;
  26. }
  27.  
  28. main() {
  29.     int n;  
  30.     cin >> n;
  31.     int len = sqrt(n) + 1;
  32.     vector<int> a(n), sum(len);
  33.     for (int& i : a) {
  34.         cin >> i;
  35.     }
  36.     for (int i = 0; i < n; ++i) {
  37.         sum[i / len] += a[i];
  38.     }
  39.     int q;
  40.     cin >> q;
  41.     while (q--) {
  42.         char cmd;
  43.         cin >> cmd;
  44.         int l, r;
  45.         cin >> l >> r;
  46.         if (cmd == 's') {
  47.             --l, --r;
  48.             cout << summ(l, r, len, sum, a) << ' ';
  49.         } else {
  50.             --l;
  51.             upd(l, r, len, sum, a);
  52.         }
  53.     }
  54.     return 0;
  55. }
Advertisement
Add Comment
Please, Sign In to add comment