Pagini recente » Cod sursa (job #2716321) | Cod sursa (job #3234943) | Cod sursa (job #821386) | Cod sursa (job #1966552) | Cod sursa (job #2497687)
#include <iostream>
#include <fstream>
using namespace std;
const int MAXN = 100010;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int bit[MAXN], n, t;
int zeros(int x) {
return ((x ^ (x - 1)) & x);
}
void sub(int pos, int value) {
for (int i = pos; i <= n; i += zeros(i))
bit[i] -= value;
}
void add(int pos, int value) {
for (int i = pos; i <= n; i += zeros(i))
bit[i] += value;
}
int getSum(int pos) {
int sum = 0;
for (int i = pos; i; i -= zeros(i))
sum += bit[i];
return sum;
}
int main() {
fin >> n >> t;
for (int i = 1; i <= n; ++i) {
int x;
fin >> x;
add(i, x);
}
for (int i = 0; i < t; ++i) {
int type, x, y;
fin >> type >> x >> y;
if (type == 0)
sub(x, y);
else {
int sum1, sum2;
sum1 = getSum(x - 1);
sum2 = getSum(y);
fout << sum2 - sum1 << '\n';
}
}
return 0;
}