Pagini recente » Cod sursa (job #2638388) | Cod sursa (job #2866903) | Cod sursa (job #2880128) | Cod sursa (job #303286) | Cod sursa (job #1948523)
#include <fstream>
#define NMAX 15010
using namespace std;
FILE *fin, *fout;
int n, m, aib[NMAX];
void update(int x, int q);
int calcul(int x);
int zeros(int x);
int main()
{
int i, a, b, tip;
fin = fopen("datorii.in", "r");
fout = fopen("datorii.out", "w");
fscanf(fin, "%d%d", &n, &m);
for (i = 1; i <= n; i++)
{
fscanf(fin, "%d", &a);
update(i, a);
}
for (i = 1; i <= m; i++)
{
fscanf(fin, "%d%d%d", &tip, &a, &b);
if (!tip)
update(a, -b);
else
fprintf(fout, "%d\n", calcul(b) - calcul(a - 1));
}
fclose(fout);
return 0;
}
void update(int x, int q)
{
int i;
for (i = x; i <= n; i += zeros(i))
aib[i] += q;
}
int calcul(int x)
{
int i, rez = 0;
for (i = x; i > 0; i -= zeros(i))
rez += aib[i];
return rez;
}
int zeros(int x)
{
return (x & (-x));
}