Pagini recente » Cod sursa (job #2858925) | Cod sursa (job #2901571) | Cod sursa (job #56546) | Cod sursa (job #3156117) | Cod sursa (job #1385362)
#include<bits/stdc++.h>
using namespace std;
int N, M, Arb[131072];
void Uptade(int poz, int val)
{
while(poz <= N) {
Arb[poz] += val;
int C = 0;
while(!(poz & (1 << C)))
++ C;
poz += (1 << C);
}
}
int Query(int st, int dr)
{
int Sum = 0;
while(dr >= st){
Sum += Arb[dr];
int C = 0;
while(!(dr & (1 << C)))
++ C;
dr -= (1 << C);
}
return Sum;
}
int main()
{
int val,T,tip;
freopen("datorii.in", "r", stdin);
freopen("datorii.out", "w", stdout);
scanf("%d%d", &N, &M);
for(int i = 1; i <= N; Uptade(i, val), ++ i )
scanf("%d", &val);
for( ; M ; --M ) {
scanf("%d%d%d", &tip, &T, &val);
if(!tip)
Uptade(T, -val);
else
printf("%d\n", Query(T, val) - Query(1, T - 1));
}
return 0;
}