Pagini recente » Cod sursa (job #2423014) | Cod sursa (job #2083975) | Cod sursa (job #2739659) | Cod sursa (job #449295) | Cod sursa (job #2441386)
#include <iostream>
#include <fstream>
int n, m;
int fenwick_tree[15000 + 1];
inline int next_index(int index){return index + (index&-index);}
inline int previous_index(int index){return index - (index&-index);}
int query(int index){
int sum = 0;
do{
sum += fenwick_tree[index];
}while((index = previous_index(index)));
return sum;
}
void update(int index, int value){
do{
fenwick_tree[index] -= value;
} while((index = next_index(index))<=n);
return;
}
int main()
{
std::ifstream fin("datorii.in");
std::ofstream fout("datorii.out");
fin>>n>>m;
for(int i=1; i<=n; i++){
int x;
fin>>x;
fenwick_tree[i] += x;
if(next_index(i)<=n)
fenwick_tree[next_index(i)] += fenwick_tree[i];
}
for(int i=1; i<=m; i++){
int c, x, y;
fin>>c>>x>>y;
if(c) fout<<query(y) - query(x-1)<<std::endl;
else update(x, y);
}
}