Pagini recente » Cod sursa (job #2667448) | Cod sursa (job #1278337) | Cod sursa (job #2193049) | Cod sursa (job #3124148) | Cod sursa (job #1785231)
#include <bits/stdc++.h>
#define per pair<int,int>
#define f first
#define s second
#define pb push_back
#define mp make_pair
using namespace std;
const int NMAX = 30000 + 5;
int arb[NMAX],instr,x,y,n,m;
inline void build()
{
for (int i = n - 1; i; --i)
arb[i] = arb[i*2] + arb[i*2 + 1];
return ;
}
inline void update(int pos,int val)
{
arb[pos+=n-1] -= val;
for (pos/=2; pos; pos/=2)
arb[pos] = arb[pos*2] + arb[pos*2 + 1];
return ;
}
inline int query(int st,int dr)
{
st+=n-1;
dr += n;
int sum = 0;
while(st<dr)
{
if (st&1)
sum+=arb[st++];
if (dr&1)
sum+=arb[--dr];
st/=2;
dr/=2;
}
return sum;
}
int main()
{
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
scanf("%d %d\n", &n, &m);
for (int i = 0; i<n; ++i)
scanf("%d", &arb[i+n]);
build();
for (int i = 1; i<=m; ++i)
{
scanf("%d %d %d\n",&instr,&x,&y);
if (instr==0)
update(x,y);
else printf("%d\n",query(x,y));
}
return 0;
}