Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- #include <vector>
- using namespace std;
- #define int long long
- void upd(const int i, const int x, const int len, vector<int> &sum, vector<int> &a){
- sum[i / len] += -a[i] + x;
- a[i] = x;
- }
- int summ(const int l, const int r, const int len, vector<int> &sum, vector<int> &a){
- int ans = 0;
- for (int i = l; i <= r;) {
- if (i % len == 0 && i + len < r) {
- ans += sum[i / len];
- i += len;
- } else {
- ans += a[i];
- ++i;
- }
- }
- return ans;
- }
- main() {
- int n;
- cin >> n;
- int len = sqrt(n) + 1;
- vector<int> a(n), sum(len);
- for (int& i : a) {
- cin >> i;
- }
- for (int i = 0; i < n; ++i) {
- sum[i / len] += a[i];
- }
- int q;
- cin >> q;
- while (q--) {
- char cmd;
- cin >> cmd;
- int l, r;
- cin >> l >> r;
- if (cmd == 's') {
- --l, --r;
- cout << summ(l, r, len, sum, a) << ' ';
- } else {
- --l;
- upd(l, r, len, sum, a);
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment