Pagini recente » Cod sursa (job #2931947) | Cod sursa (job #677849) | Cod sursa (job #1106537) | Cod sursa (job #1581109) | Cod sursa (job #113124)
Cod sursa(job #113124)
#include <stdio.h>
#define LSB(x) (((x) & (x - 1)) ^ (x))
int N, M, A[15001], S[150001], T[15001];
void update(int n, int v)
{
for (; n <= N; n += LSB(n))
T[n] += v;
}
int query(int l, int r)
{
int n, res = 0;
for (n = r; n > 0; n -= LSB(n))
res += T[n];
for (n = l - 1; n > 0; n -= LSB(n))
res -= T[n];
return res;
}
int main(void)
{
FILE *fin, *fout;
int i, j, k;
fin = fopen("datorii.in", "r");
fout = fopen("datorii.out", "w");
fscanf(fin, "%d %d\n", &N, &M);
for (i = 1; i <= N; i++)
fscanf(fin, "%d", A + i),
S[i] = S[i - 1] + A[i];
for (; M; M--)
{
fscanf(fin, "%d %d %d", &k, &i, &j);
if (!k)
update(i, j);
else
fprintf(fout, "%d\n", S[j] - S[i - 1] - query(i, j));
}
fclose(fin), fclose(fout);
return 0;
}