Pagini recente » Cod sursa (job #443597) | Cod sursa (job #650490) | Cod sursa (job #2304459) | Cod sursa (job #2936122) | Cod sursa (job #2425047)
#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()
{
ifstream fin("datorii.in");
ofstream fout("datorii.out");
ios_base::sync_with_stdio(false);
int m, i, x;
fin >> n >> m;
for(poz = 1; poz <= n; ++poz)
{
fin >> val;
update(1, 1, n);
}
do {
fin >> x;
if(x == 0)
{
fin >> poz >> val;
val = -val;
update(1, 1, n);
}
else
{
fin >> a >> b;
(fout << query(1, 1, n)).put('\n');
}
} while(--m);
return 0;
}