Pagini recente » Cod sursa (job #851512) | Cod sursa (job #1855477) | Cod sursa (job #552255) | Cod sursa (job #2663338) | Cod sursa (job #468040)
Cod sursa(job #468040)
#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;
}