Pagini recente » Cod sursa (job #1211654) | Monitorul de evaluare | Cod sursa (job #505963) | Cod sursa (job #1278813) | Cod sursa (job #3338297)
#include <iostream>
#include <fstream>
using namespace std;
ifstream input("f.in");
ofstream output("f.out");
int N, M, A[15001];
int lsb(int n){
return n & (-n);
}
void add(int pos, int amount){
for(int i = pos; i <= N; i += lsb(i))
A[i] += amount;
}
int compute(int pos){
int sum = 0;
for(int i = pos; i >= 1; i -= lsb(i))
sum += A[i];
return sum;
}
int main(){
input >> N >> M;
for(int i = 1; i <= N; i ++){
int x;
input >> x;
add(i, x);
}
for(int i = 0; i < M; i ++){
int code;
input >> code;
if(code == 0){
int T, V;
input >> T >> V;
add(T, -V);
}
else{
int P, Q;
input >> P >> Q;
cout << compute(Q) - compute(P - 1) << "\n";
}
}
}