Cod sursa(job #3366482)

Utilizator Mihail_SebiastianPandrea Mihail-Sebiastian Mihail_Sebiastian Data 1 octombrie 2026 22:46:02
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <bits/stdc++.h>

using namespace std;
int n, m, aib[15001];
int ub(int x){
    return x & -x;
}
void add(int x, int y){
    int i;
    for(i = x; i <= n; i += ub(i)){
        aib[i] += y;
    }
}
void scade(int x, int y){
    int i;
    for(i = x; i <= n; i += ub(i)){
        aib[i] -= y;
    }
}

int sum(int x){
    int i, s = 0;
    for(i = x; i >= 1; i -= ub(i)){
        s += aib[i];
    }
    return s;
}
int main()
{
    freopen("datorii.in", "r", stdin);
    freopen("datorii.out", "w", stdout);
    //printf("trrtr");
    int i, x, o, t, v;
    scanf("%d %d", &n, &m);
    for(i = 1; i <= n; i++){
        scanf("%d", &x);
        add(i, x);
    }
    for(i = 1; i <= m; i++){
        scanf("%d %d %d", &o, &t, &v);
        if(o == 1){
            printf("%d\n", sum(v) - sum(t-1));
        }else {
            scade(t, v);
        }
    }
    return 0;
}