Pagini recente » Cod sursa (job #2780415) | Cod sursa (job #2375995) | Cod sursa (job #1599202) | Cod sursa (job #1725753) | Cod sursa (job #69527)
Cod sursa(job #69527)
#include <stdio.h>
#define NMAX 15005
int c[NMAX];
int n, m;
void add(int v, int x)
{
int poz = 0;
while(x <= n)
{
c[x] += v;
while((x & (1<<poz)) == 0)
++poz;
x += (1<<poz);
++poz;
}
}
int suma(int dr)
{
int s = 0, poz = 0;
while(dr > 0)
{
s += c[dr];
while((dr & (1<<poz)) == 0)
++poz;
dr -= (1<<poz);
++poz;
}
return s;
}
void write(int st, int dr)
{
printf("%d\n", suma(dr) - suma(st-1));
}
int main()
{
int op, a, b;
freopen("datorii.in", "r", stdin);
freopen("datorii.out", "w", stdout);
scanf("%d %d", &n, &m);
int i;
for(i = 1; i <= n; ++i)
scanf("%d", &a), add(a, i);
for(i = 1; i <= m; ++i)
{
scanf("%d %d %d", &op, &a, &b);
if(!op)
add(-b, a);
else
write(a, b);
}
return 0;
}