Pagini recente » Cod sursa (job #1207201) | Cod sursa (job #1093779) | Cod sursa (job #1740868) | Cod sursa (job #1710319) | Cod sursa (job #1702278)
#include <bits/stdc++.h>
using namespace std;
const int NMAX = 15005;
int n;
int aib[NMAX];
inline int lsb(int arg) {
return arg&(-arg);
}
inline void update(int poz, int val) {
while(poz<=n) {
aib[poz]+=val;
poz+=lsb(poz);
}
}
inline int query(int poz) {
int ans=0;
while(poz) {
ans+=aib[poz];
poz-=lsb(poz);
}
return ans;
}
inline int query(int a, int b) {
return query(b)-query(a-1);
}
int main(void) {
FILE *fi = fopen("datorii.in", "r");
FILE *fo = fopen("datorii.out", "w");
int m, tsk, a, b, t;
fscanf(fi,"%d%d",&n,&m);
for(int i=1; i<=n; ++i) {
fscanf(fi,"%d",&t);
update(i, t);
}
while(m--) {
fscanf(fi,"%d%d%d",&tsk,&a,&b);
switch(tsk) {
case 0:
update(a, -b);
break;
case 1:
fprintf(fo,"%d\n",query(a, b));
break;
}
}
fclose(fi);
fclose(fo);
return 0;
}