Pagini recente » Cod sursa (job #2772946) | Cod sursa (job #1084242) | Cod sursa (job #1084299) | Cod sursa (job #1426212) | Cod sursa (job #2410462)
#include <bits/stdc++.h>
#define NMAX 15005
#define inc(x) ((x^(x-1))&x)
using namespace std;
FILE*f=fopen("datorii.in","r");
FILE*g=fopen("datorii.out","w");
int n,m,aib[NMAX];
void adauga(int val,int k) {
int i;
for (i=k;i<=n;i+=inc(i)) aib[i]+=val;
}
int suma(int k) {
int i,s=0;
for (i=k;i>=1;i-=inc(i)) s+=aib[i];
return s;
}
int main() {
int i,p,x,y;
fscanf(f,"%d%d",&n,&m);
for (i=1;i<=n;i++) {
fscanf(f,"%d",&x);
adauga(x,i);
}
for (i=1;i<=m;i++) {
fscanf(f,"%d%d%d",&p,&x,&y);
if (!p) adauga(-y,x);
else fprintf(g,"%d\n",suma(y)-suma(x-1));
}
return 0;
}