Pagini recente » Vlad | Monitorul de evaluare | Vlad | Monitorul de evaluare | Cod sursa (job #3333021)
#include <fstream>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
const int Nmax = 15005;
int n, q;
int aib[Nmax];
void actualiare_aib(int poz, int val){
while(poz <= n){
aib[poz] -= val;
poz += poz & (-poz);
}
}
int interogare_aib(int poz){
int sol = 0;
while(poz > 0){
sol += aib[poz];
poz -= poz & (-poz);
}
return sol;
}
int interogare(int x, int y){
return interogare_aib(y) - interogare_aib(x - 1);
}
void citire_sir_initial(){
int val;
fin >> n >> q;
for(int i = 1; i <= n; i++){
fin >> val;
actualiare_aib(i, -val);
}
}
void citire_si_rezolvare_interogari(){
int tip, poz, val, start, finish;
for(int i = 1; i <= q; i++){
fin >> tip;
if(tip == 0){
fin >> poz >> val;
actualiare_aib(poz, val);
}
else{
fin >> start >> finish;
fout << interogare(start, finish) << '\n';
}
}
}
int main(){
citire_sir_initial();
citire_si_rezolvare_interogari();
return 0;
}