Pagini recente » Cod sursa (job #1999329) | Cod sursa (job #2455912) | Cod sursa (job #2855525) | Cod sursa (job #1309785) | Cod sursa (job #3229528)
#include <stdio.h>
#include <stdlib.h>
#define MAXN 15000
int n;
int v[MAXN+1];
int aib[MAXN+1];
int zeros(int x){
return (x ^ (x-1)) & x;
}
int add(int x,int plus){
int i;
for(i=x;i<=n;i+=zeros(i)){
aib[i]+=plus;
}
}
int calcsum(int e){
int i, sum=0;
for(i=e;i>0;i-=zeros(i)){
sum+=aib[i];
}
return sum;
}
int main()
{
FILE *fin; FILE *fout;
int m,i,c,va,t;
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",&v[i]);
add(i,v[i]);
}
for(i=1;i<=m;i++){
fscanf(fin,"%d%d%d",&c,&va,&t);
if(c==1){
fprintf(fout,"%d\n",calcsum(t)-calcsum(va-1));
}
if(c==0){
add(va,-t);
}
}
fclose(fin);
fclose(fout);
return 0;
}