Cod sursa(job #1962709)

Utilizator andreiutu111Noroc Andrei Mihail andreiutu111 Data 11 aprilie 2017 23:41:56
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <fstream>
#include <cstring>

#define LBS(x) ((x^(x-1))&x)

using namespace std;

int N,M,i,AIB[15001],v,Q,R,sum,x;


void adaug(int x,int quant){

    for(int j=x;j<=N;j+=LBS(j))
        AIB[j]+=quant;

}

int Sum(int x){
    int ret=0;
    for(int j=x;j>=1;j-=LBS(j))
        ret+=AIB[j];

    return ret;

}

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

    scanf("%d%d",&N,&M);

    for(i=1;i<=N;i++){
        scanf("%d",&x);
        adaug(i,x);
    }

    for(i=1;i<=M;i++){

        scanf("%d%d%d",&v,&Q,&R);

        if(v==0)adaug(Q,-R);
        else{

            sum=Sum(R)-Sum(Q-1);
            printf("%d\n",sum);

        }

    }

    return 0;
}