Pagini recente » Cod sursa (job #413529) | Cod sursa (job #1234583) | Cod sursa (job #2181840) | Cod sursa (job #1630044) | Cod sursa (job #1799184)
#include <cstdio>
#define NARB 100002
using namespace std;
int tip, n, m, x, pos, Sol, a, b, Arb[NARB];
inline void Update(int st, int dr, int nod){
if(st == dr){Arb[nod] += x; return ;}
int mid = (st + dr) / 2;
if(pos <= mid) Update(st, mid, 2 * nod);
else Update(mid + 1, dr, 2 * nod + 1);
Arb[nod] = Arb[nod * 2 + 1] + Arb[nod * 2];
}
inline void Query(int st, int dr, int nod){
if(a <= st && dr <= b){Sol += Arb[nod]; return ;}
int mid = (st + dr) / 2;
if(a <= mid) Query(st, mid, 2 * nod);
if(mid < b) Query(mid + 1, dr, 2 * nod + 1);
}
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", &x);
if(x == 0) continue ;
pos = i;
Update(1, n, 1);
}
for(int i = 1; i <= m ; ++i){
scanf("%d%d%d", &tip, &pos, &x);
if(tip == 0){
x = -x;
Update(1, n, 1);
continue ;
}
a = pos; b = x;
Sol = 0;
Query(1, n, 1);
printf("%d\n", Sol);
}
return 0;
}