Cod sursa(job #2564549)

Utilizator Andrei012Trache Andrei Andrei012 Data 1 martie 2020 22:47:13
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <bits/stdc++.h>

using namespace std;
int aib[15001],n,m;

int len(int x){
    return x-(x&(x-1));
};

void update(int poz,int val){
    while(poz<=n){
        aib[poz]+=val;
        poz+=len(poz);
    }
};

void update1(int poz,int val){
    while(poz<=n){
        aib[poz]-=val;
        poz+=len(poz);
    }
};

int query(int poz){
    int s=0;
    while(poz>0){
        s+=aib[poz];
        poz-=len(poz);
    }
    return s;
}

int main()
{
    ifstream cin("datorii.in");
    ofstream cout("datorii.out");
    int i,j,a,b,x,cer;
    cin>>n>>m;
    for(i=1;i<=n;i++){
        cin>>x;
        update(i,x);
    }
    for(i=1;i<=m;i++){
        cin>>cer;
        if(cer==0)
        {
            cin>>j>>x;
            update1(j,x);
        }
        else{
            cin>>a>>b;
            cout<<query(b)-query(a-1)<<'\n';
        }
    }
    return 0;
}