Pagini recente » Cod sursa (job #2999703) | Cod sursa (job #1896534) | Cod sursa (job #1165859) | Cod sursa (job #2067683) | Cod sursa (job #2425052)
#include <bits/stdc++.h>
#define INF 10
using namespace std;
int n;
int arb[60000], poz, val, a, b;
void update(int p, int st, int dr)
{
if(st == dr)
{
arb[p] += val;
return;
}
int m = (st + dr) / 2;
if(poz <= m)
update(2*p, st, m);
else
update(2*p+1, m+1, dr);
arb[p] = arb[2*p] + arb[2*p+1];
}
int query(int p, int st, int dr)
{
if(a <= st && dr <= b)
return arb[p];
int m = (st + dr) / 2, m1 = -INF, m2 = -INF;
if(a <= m)
{
m1 = query(2*p, st, m);
if(b > m)
return m1 + query(2*p+1, m+1, dr);
return m1;
}
if(b > m)
return query(2*p+1, m+1, dr);
return 0;
}
int main()
{
freopen("datorii.in", "r", stdin);
freopen("datorii.out", "w", stdout);
ios_base::sync_with_stdio(false);
int m, i, x;
cin >> n >> m;
for(poz = 1; poz <= n; ++poz)
{
cin >> val;
update(1, 1, n);
}
do {
cin >> x;
if(x == 0)
{
cin >> poz >> val;
val = -val;
update(1, 1, n);
}
else
{
cin >> a >> b;
(cout << query(1, 1, n)).put('\n');
}
} while(--m);
return 0;
}