Pagini recente » Cod sursa (job #1360895) | Cod sursa (job #2946115) | Cod sursa (job #2264685) | Cod sursa (job #138373) | Cod sursa (job #3151819)
#include <bits/stdc++.h>
using namespace std;
ifstream fin;
ofstream fout;
int N;
vector<int> arr(1e5+5, 0);
vector<int> bit(1e5+5, 0);
void update(int i, int val) {
while(i <= N) {
bit[i] += val;
i += (i & (-i));
}
}
int prefixSum(int i) {
int sum = 0;
while(i > 0) {
sum += bit[i];
i -= (i & (-i));
}
return sum;
}
int rangeSum(int i, int j) {
return prefixSum(j) - prefixSum(i - 1);
}
int main()
{
int M;
int command;
int T, V, P, Q;
fin.open("datorii.in");
fin >> N >> M;
for(int i = 1; i <= N; i++) {
fin >> arr[i];
update(i, arr[i]);
}
fout.open("datorii.out");
for(int i = 0; i < M; i++) {
fin >> command;
if(command == 0) {
// A
fin >> T >> V;
update(T, -V);
} else {
fin >> P >> Q;
fout << rangeSum(P, Q) << endl;
}
}
fin.close();
fout.close();
return 0;
}