Pagini recente » Cod sursa (job #1219083) | Cod sursa (job #41255) | Cod sursa (job #223285) | Cod sursa (job #2120181) | Cod sursa (job #113788)
Cod sursa(job #113788)
#include <stdio.h>
#define Nmax 15001
long c[Nmax], i, j, k, n, m, val, x, y, z;
long suma(long p, long q)
{
long st=c[--p], dr=c[q];
while (q)
{
for (k=1; !(k&q); k<<=1); q-=k;
if (q) dr+=c[q];
}
while (p)
{
for (k=1; !(k&p); k<<=1); p-=k;
if (p) st+=c[p];
}
return dr-st;
}
void add(long p, long v)
{
c[p]+=v;
while (p<=n)
{
for (k=1; !(k&p); k<<=1); p+=k;
if (p<=n) c[p]+=v;
}
}
int main()
{
freopen("datorii.in", "r", stdin);
freopen("datorii.out", "w", stdout);
scanf("%ld %ld\n", &n, &m);
for (i=1; i<=n; i++)
{
scanf("%ld ", &val);
if (val) add(i,val);
}
for (; m; m--)
{
scanf("%ld %ld %ld\n", &x, &y, &z);
if (x) printf("%ld\n", suma(y,z));
else add(y,-z);
}
fclose(stdin);
fclose(stdout);
return 0;
}