Pagini recente » Cod sursa (job #1905730) | Cod sursa (job #1733590) | Cod sursa (job #275188) | Cod sursa (job #2812289) | Cod sursa (job #2231764)
#include <cstdio>
#define lsb(x) (x & (-x))
FILE *fin = freopen("datorii.in","r",stdin); FILE *fout = freopen("datorii.out","w",stdout);
const int MAX_N = 15000 + 5;
/* ------------ DATA -------------*/
int n,m;
int aib[MAX_N];
/* ------------ DATA -------------*/
void Update(int position, int val)
{
for(int i = position; i <= n; i+=lsb(i))
{
aib[i]+=val;
}
}
void Achita(int day, int val)
{
for(int i = day; i<= n; i+= lsb(i))
{
aib[i]-=val;
}
}
int Query(int position)
{
int result = 0;
for(int i = position; i> 0 ; i-=lsb(i))
{
result+=aib[i];
}
return result;
}
int main()
{
int x, op, a, b,i;
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",&op,&a,&b);
if(!op)
{
Achita(a,b);
}
else
{
printf("%d\n",Query(b)-Query(a-1));
}
}
}