Pagini recente » Cod sursa (job #1906970) | Cod sursa (job #2789095) | Cod sursa (job #1773893) | Cod sursa (job #784175) | Cod sursa (job #2750645)
#include <fstream>
using namespace std;
const int NMAX = 100000;
int aib[NMAX + 5];
int n;
void init(int poz, int val){
for(; poz <= n; poz += (poz ^ (poz & (poz - 1)))){
aib[poz] += val;
}
}
void update(int poz, int val){
for(; poz <= n; poz += (poz ^ (poz & (poz - 1)))){
aib[poz] -= val;
}
}
int query(int poz){
int sum = 0;
for(; poz >= 1; poz -= (poz ^ (poz & (poz - 1)))){
sum += aib[poz];
}
return sum;
}
ifstream cin("datorii.in");
ofstream cout("datorii.out");
int main()
{
int m, i, a, b, op, last;
cin >> n >> m;
for(i = 1; i <= n; i ++){
cin >> a;
init(i, a);
}
for(i = 1; i <= m; i ++){
cin >> op >> a;
if(op == 0){
cin >> b;
update(a, b);
}
else if(op == 1){
cin >> b;
cout << query(b) - query(a - 1) << "\n";
}
}
return 0;
}