Cod sursa(job #2105991)

Utilizator Andrei243Nitu Mandel Andrei Andrei243 Data 14 ianuarie 2018 18:42:49
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream in("datorii.in");
ofstream out("datorii.out");
int zeros(int i){
return i&(i^(i-1));

}
int BIT[15050];
int nr;
void add(int x, int cantitate){
int i;
for(i=x;i<=nr;i+=zeros(i)) BIT[i]+=cantitate;


}

int calc(int x){
int i,rez=0;
for(i=x;i>0;i-=zeros(i)) rez+=BIT[i];
return rez;

}


int main()
{int nroperatii;
int op,arg1,arg2;

   in>>nr>>nroperatii;
for(int i=1;i<=nr;i++){
int x;
in>>x;
add(i,x);
}


for(int i=1;i<=nroperatii;i++){
in>>op>>arg1>>arg2;

if(op==0){
add(arg1,-arg2);

}
else {
out<<calc(arg2)-calc(arg1-1);
out<<'\n';
}


}
    return 0;
}