Pagini recente » Cod sursa (job #151840) | Istoria paginii runda/asdsad/clasament | Diferente pentru preoni-2007/runda-4/solutii intre reviziile 34 si 27 | Istoria paginii runda/simulareinfo1_7/clasament | Cod sursa (job #1837696)
#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 main()
{
freopen("datorii.in", "r", stdin);
freopen("datorii.out", "w", stdout);
scanf("%d %d", &N, &M);
for(int i=1; i<=N; i++)
scanf("%d", &A[i]);
construieste_arbore();
int op, x, y;
for(int i=0; i< M; i++){
scanf("%d %d %d", &op, &x, &y);
if(op == 0)
add(x, -y);
else
printf("%d\n", suma(y) - suma(x-1) );
}
return 0;
}