Pagini recente » Cod sursa (job #761231) | Cod sursa (job #2354034) | Cod sursa (job #1546618) | Cod sursa (job #1090091) | Cod sursa (job #1837694)
#include <iostream>
#include <stdio.h>
using namespace std;
int A[100003], BIT[100003];
int N, M;
void afisare(){
for(int i=1; i<=N; i++)
cout << BIT[i] << "\n";
}
int suma(int i){
int rez = 0;
while(i!=0){
rez += BIT[i];
i -= i&(-i);
}
return rez;
}
void add(int i, int val){
while(i <= N){
BIT[i] += val;
i += i &(-i);
}
}
void construieste_arbore(){
for(int i=1; i<=N; i++){
add(i, A[i]);
}
}
int gaseste(int i, int st, int dr){
int m = (st+dr)/2;
if(st == dr)
return st;
else
if(i <= suma(m))
return gaseste(i, st, m);
else
return gaseste(i, m+1, dr);
}
int main()
{
freopen("datorii.in", "r", stdin);
freopen("datorii.out", "w", stdout);
cin >> N >> M;
for(int i=1; i<=N; i++)
cin >>A[i];
construieste_arbore();
int op, x, y;
for(int i=0; i< M; i++){
cin >> op >> x >> y;
if(op == 0)
add(x, -y);
else
cout << suma(y) - suma(x-1) << "\n";
}
return 0;
}