Cod sursa(job #1837696)

Utilizator mdiannnaMarusic Diana mdiannna Data 30 decembrie 2016 12:25:44
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <iostream>
#include <stdio.h>

using namespace std;
int A[100003], BIT[100003];
int N, M;

void afisare(){
    for(int i=1; i<=N; i++)
        cout << BIT[i] << "\n";
}


int suma(int i){
    int rez = 0;
    while(i!=0){
        rez += BIT[i];
        i -= i&(-i);
    }
    return rez;
}

void add(int i, int val){
    while(i <= N){
        BIT[i] += val;
        i += i &(-i);
    }
}

void construieste_arbore(){
    for(int i=1; i<=N; i++){
        add(i, A[i]);
    }
}



int main()
{
    freopen("datorii.in", "r", stdin);
    freopen("datorii.out", "w", stdout);

    scanf("%d %d", &N, &M);
    for(int i=1; i<=N; i++)
        scanf("%d", &A[i]);

    construieste_arbore();

    int op, x, y;


    for(int i=0; i< M; i++){
        scanf("%d %d %d", &op, &x, &y);
        if(op == 0)
            add(x, -y);
        else
            printf("%d\n", suma(y) - suma(x-1) );
    }

    return 0;
}