//Segment TREE
#include <stdio.h>
#define ll long long

ll arr[100010];
ll seg[4*100010];

ll init(int s, int e, int node) {
    if(s==e) return seg[node] = arr[s];
    int m=(s+e)/2;
    return seg[node]=init(s, m, node*2)+init(m+1, e, node*2+1);
}

ll sum(int s, int e, int node, int l, int r) {
    if(l>e||r<s) return 0;
    if(l<=s&&e<=r) return seg[node];

    int m=(s+e)/2;
    return sum(s, m, node*2, l ,r)+sum(m+1, e, node*2+1, l, r);
}

void update(int s, int e, int node, int idx, ll val) {
    if(idx<s||idx>e) return;

    seg[node]+=val;
    if(s==e) return;
    int m=(s+e)/2;
    update(s, m, node*2, idx, val);
    update(m+1, e, node*2+1, idx, val);
}

int main() {
    int n, m;
    scanf("%d %d", &n, &m);

    for(int i=0; i<n; i++) scanf("%lld", &arr[i]);

    init(0, n-1, 1);

    for(int i=0; i<m; i++) {
        int q;
        scanf("%d", &q);

        if(q==1) {
            int i, j, k;
            update(0, n-1, 1, l-1, r-arr[l-1]);

            
            arr[l-1]=r;
        }
        else {
            ll SUM=sum(0, n-1, 1, l-1, r-1);
            printf("%.2lf\n", (double)SUM/(r-l+1));
        }
    }
}

Incrustar en el sitio web

Para incrustar este proyecto en tu sitio web, copia el siguiente código y pégalo en el HTML de tu sitio web: