Pagini recente » Cod sursa (job #2935023) | Cod sursa (job #1956389)
#include<bits/stdc++.h>
using namespace std;
int arb[40100],n,m,i,x,t;
void update(int st, int dr, int nod, bool u)
{
if(st == dr)
{
arb[nod] += (u? -x:x);
return;
}
int mid = (st + dr)/2;
if (i <= mid) update(st,mid,nod*2,u);
else update(mid+1,dr,nod*2+1,u);
arb[nod] = arb[nod*2+1] + arb[2*nod];
}
int query(int st,int dr, int a, int b, int nod)
{
if(a <= st && dr <= b)
{
return arb[nod];
}
int ret = 0,ret1 = 0, mid = (st + dr)/2;
if(a <= mid) ret = query(st,mid,a,b,nod*2);
if(b > mid) ret1 = query(mid+1,dr,a,b,nod*2+1);
return ret+ret1;
}
int main()
{
ifstream cin("datorii.in");
ofstream cout("datorii.out");
cin >> n >> m;
for (i = 1; i <= n; i++)
{
cin >> x;
update(1, n, 1, 0);
}
while(m--)
{
cin >> t >> i >> x;
if (!t)
{
update(1,n,1,1);
}else {
cout << query(1,n,i,x,1) << "\n";
}
}
}