Pagini recente » Cod sursa (job #2892104) | Cod sursa (job #530315) | Cod sursa (job #2284765) | Cod sursa (job #2964930) | Cod sursa (job #2455224)
// ============================================================================
#include <stdio.h>
// ============================================================================
#define zeros(x) ((x^(x-1))&x)
// ============================================================================
int main (void)
{
int datorii [15002];
int n, m;
int zi, suma;
int tip, i;
int a, b;
FILE *input;
FILE *output;
input = fopen ("datorii.in", "r");
output = fopen ("datorii.out", "w");
fscanf (input, "%d %d", &n, &m);
zi = 1;
while (zi <= n)
{
fscanf (input, "%d", &suma);
i = zi;
while (i <= n)
{
datorii [i] += suma;
i += zeros (i);
}
zi++;
}
for (int j = 0; j < m; j++)
{
fscanf (input, "%d %d %d", &tip, &a, &b);
if (tip == false)
{
i = a;
while (i <= n)
{
datorii [i] -= b;
i += zeros (i);
}
}
else
{
suma = 0;
zi = b;
while (zi > 0)
{
suma += datorii [zi];
zi -= zeros (zi);
}
zi = a - 1;
while (zi > 0)
{
suma -= datorii [zi];
zi -= zeros (zi);
}
fprintf(output, "%d\n", suma);
}
}
fclose (input);
fclose (output);
return 0;
}
// ============================================================================