Cod sursa(job #1945106)

Utilizator RaZxKiDDavid Razvan RaZxKiD Data 29 martie 2017 12:58:16
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <iostream>
#include <fstream>

#define zeros(x) ((-x)&(x))

using namespace std;

ifstream in("datorii.in");
ofstream out("datorii.out");

int n,m;
int AIB[15005];

void add(int x, int val){
    for(int i=x;i<=n;i+=zeros(i)){
        AIB[i]+=val;
    }
}
int sum(int x){
    int s=0;
    for(int i=x;i>=1;i-=zeros(i)){
        s+=AIB[i];
    }
    return s;
}
int sum_interval(int a, int b){
    return sum(b)-sum(a-1);
}

void read(){
    int x;
    in>>n>>m;
    for(int i=1;i<=n;i++){
        in>>x;
        add(i,x);
    }
}
void solve(){
    int op,x,y;
    for(int i=1;i<=m;i++){
        in>>op>>x>>y;
        if(!op){
            add(x,-y);
        }
        else{
            out<<sum_interval(x,y)<<"\n";
        }
    }
}
int main(){
    read();
    solve();
    return 0;
}