Preview:
const long long N = 2 * 1e5 + 2;

long long tree[4 * N], v[N];

void build(long long node, long long st, long long e)
{
    if (st == e)
    {
        tree[node] = v[st];
        return;
    }

    long long mid = (st + e) / 2;
    build(2 * node, st, mid);
    build(2 * node + 1, mid + 1, e);

    tree[node] = tree[2 * node] + tree[2 * node + 1];
}

long long query(long long node, long long st, long long e, long long l, long long r)
{
    if (l > e || r < st)
        return 0;

    if (l <= st && r >= e)
        return tree[node];

    long long mid = (st + e) / 2;
    long long left = query(2 * node, st, mid, l, r);
    long long right = query(2 * node + 1, mid + 1, e, l, r);

    return left + right;
}

void update(long long node, long long st, long long e, long long ind, long long val)
{
    if (st == e)
    {
        v[st] = val;
        tree[node] = val;
        return;
    }

    long long mid = (st + e) / 2;
    if (ind <= mid)
    {
        update(2 * node, st, mid, ind, val);
    }
    else
    {
        update(2 * node + 1, mid + 1, e, ind, val);
    }

    tree[node] = (tree[2 * node] + tree[2 * node + 1]);
}
downloadDownload PNG downloadDownload JPEG downloadDownload SVG

Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!

Click to optimize width for Twitter