Pagini recente » Cod sursa (job #257095) | Cod sursa (job #177538) | Cod sursa (job #1415979) | Cod sursa (job #2245344) | Cod sursa (job #2497768)
#include <bits/stdc++.h>
#define MAX 15015
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int n, m, v[MAX], aib[MAX];
int suma(int x){
int s = 0;
while (x){
s += aib[x];
x &= x - 1;
}
return s;
}
void adauga (int x, int val){
do{
aib[x] += val;
x += x & (-x);
} while (x <= n + 1);
}
int main()
{
f >> n >> m;
for (int i = 1; i <= n; i++){
f >> v[i];
}
for (int i = 1; i <= n; i++){
adauga (i, v[i]);
}
for (;m--;){
int op, left, right;
f >> op >> left >> right;
if (op == 0){
adauga(left, -right);
} else {
g << suma(right) - suma(left - 1) << '\n';
}
}
return 0;
}