Cod sursa(job #2449470)

Utilizator T_george_TGeorge Teodorescu T_george_T Data 19 august 2019 20:34:15
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <bits/stdc++.h>

using namespace std;
ifstream in("datorii.in");
ofstream out("datorii.out");
#define zeros(x) (x&-x)
const int NMAX=15002;
int tree[NMAX],v[NMAX],aib[NMAX],n;
int rez(int x){
    int sum=0;
    while(x){
        sum+=aib[x];
        x-=zeros(x);
    }
    return sum;
}
void update(int x,int val){
    while(x<=n){
        aib[x]+=val;
        x+=zeros(x);
    }
}
int main()
{
    int val,tip,x,y,m;
    in>>n>>m;
    for(int i=1;i<=n;i++){
        in>>val;
        update(i,val);
    }
    for(int i=1;i<=m;i++){
        in>>tip>>x>>y;
        if(tip)
            out<<rez(y)-rez(x-1)<<'\n';
        else
            update(x,-y);
    }
    return 0;
}