Pagini recente » Cod sursa (job #3322225) | Cod sursa (job #3328650) | Cod sursa (job #513485) | Cod sursa (job #3327265) | Cod sursa (job #3323076)
#include <fstream>
#include <vector>
using namespace std;
ifstream input("datorii.in");
ofstream output("datorii.out");
vector<int> sums;
int lsb(int n){
return ((n ^ (n - 1)) & n);
}
void add(int index, int amount){
for(int i = index; i < sums.size(); i += lsb(i)){
sums[i] += amount;
}
}
int getSum(int index){
int sum = 0;
for(int i = index; i > 0; i -= lsb(i)){
sum += sums[i];
}
return sum;
}
int main(){
int N, M;
input >> N >> M;
sums.resize(N + 1);
for(int i = 1; i <= N; ++ i){
int x;
input >> x;
add(i, x);
}
while(M--){
int code, a, b;
input >> code >> a >> b;
if(code == 0)
add(a, -b);
else
output << getSum(b) - getSum(a - 1) << "\n";
}
}