Pagini recente » Cod sursa (job #1522738) | Cod sursa (job #1628878) | Cod sursa (job #138106) | Cod sursa (job #942858) | Cod sursa (job #1398637)
#include <cstdio>
#define MAXN 16000
int n, m, V[MAXN];
int bit(int x)
{
return((x&(x-1))^x);
}
void update(int poz, int val)
{
int i;
for(i=poz;i<=n;i+=bit(i))
V[i]+=val;
}
void scade(int poz, int val)
{
int i;
for(i=poz;i<=n;i+=bit(i))
V[i]-=val;
}
int query(int poz)
{
int S=0,i;
for(i=poz;i>0;i-=bit(i))
S+=V[i];
return S;
}
void rezolva_problema()
{
int i, x, y, t;
scanf("%d%d", &n, &m);
for(i=1;i<=n;++i)
{
scanf("%d", &x);
update(i, x);
}
for(i=1;i<=m;++i)
{
scanf("%d%d%d", &t, &x, &y);
if(t==0)
scade(x,y);
else
printf("%d\n", query(y)-query(x-1));
}
}
int main()
{
freopen("datorii.in", "r", stdin);
freopen("datorii.out", "w", stdout);
rezolva_problema();
return 0;
}