Pagini recente » Cod sursa (job #563592) | Cod sursa (job #129778) | Cod sursa (job #90872) | Profil AlexPetrar | Cod sursa (job #1257891)
#include <cstdio>
#define Max_Size 15009
#define zeros(x) x & (-x)
using namespace std;
const char iname[] = "datorii.in";
const char oname[] = "datorii.out";
int N, M, AIB[Max_Size];
inline void Set(int poz, int val)
{
for(int i = poz; i <= N; i += zeros(i))
AIB[i] += val;
}
inline int Get(int a)
{
int sum = 0;
for(int i = a; i > 0; i -= zeros(i))
sum += AIB[i];
return sum;
}
int main()
{
FILE *in = fopen(iname, "r");
FILE *out = fopen(oname, "w");
fscanf(in, "%d%d", &N, &M);
for(int x, i = 1; i <= N; ++i) {
fscanf(in, "%d", &x);
Set(i, x);
}
for(int t, a, b, i = 1; i <= M; ++i) {
fscanf(in, "%d%d%d", &t, &a, &b);
if(!t) Set(a, -b);
else fprintf(out, "%d\n", Get(b) - Get(a - 1));
}
return 0;
}