Pagini recente » Cod sursa (job #335113) | Cod sursa (job #3281059) | Cod sursa (job #1489029) | Cod sursa (job #196216) | Cod sursa (job #468039)
Cod sursa(job #468039)
#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 %d %d\n", query(c), query(b-1), query(c) - query(b - 1));
}
fclose(g);
return 0;
}