#include <iostream>
#include <vector>
using namespace std;

typedef long long ll;
const int MAXN = 100005;

ll pre[MAXN];
int a[MAXN];

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n;
    cin >> n;
    for (int i = 1; i <= n; ++i)
    {
        cin >> a[i];
        pre[i] = pre[i - 1] + a[i];
    }

    int m;
    cin >> m;
    int change_k = 0;
    int old_v = 0, new_v = 0;
    ll diff = 0;

    for (int i = 0; i < m; ++i)
    {
        int op;
        cin >> op;
        if (op == 1)
        {
            int L, R;
            cin >> L >> R;
            ll sum = pre[R] - pre[L - 1];
            if (change_k != 0 && L <= change_k && change_k <= R)
            {
                sum += diff;
            }
            cout << sum << '\n';
        }
        else if (op == 2)
        {
            int k, num;
            cin >> k >> num;
            change_k = k;
            old_v = a[k];
            new_v = num;
            diff = new_v - old_v;
        }
    }
    return 0;
}

0 comments

No comments so far...