Pagini recente » Cod sursa (job #121834) | Cod sursa (job #581432) | Cod sursa (job #2877113) | Cod sursa (job #484980) | Cod sursa (job #468041)
Cod sursa(job #468041)
#include<stdio.h>
int n, m;
int AIB[20006];
void update(int poz,int val)
{
for(; poz <= n;poz += (poz ^ (poz - 1) & poz))
AIB[poz] += val;
}
int query(int poz)
{
int s = 0;
for(; poz; poz -= (poz ^ (poz - 1) & poz))
s += AIB[poz];
return s;
}
int main ()
{
int i, val, a, b, c;
FILE *f = fopen("datorii.in", "r");
FILE *g = fopen("datorii.out", "w");
fscanf(f, "%d%d", &n, &m);
for(i = 1;i <= n;i++)
{
fscanf(f, "%d", &val);
update(i, val);
}
for(i = 1;i <= m;i++)
{
fscanf(f, "%d%d%d", &a, &b, &c);
if( !a )
update(b, -c);
else
fprintf(g, "%d", query(c) - query(b - 1));
}
fclose(g);
return 0;
}