Pagini recente » Cod sursa (job #867544) | Cod sursa (job #1660945) | Cod sursa (job #2205645) | Cod sursa (job #2263120) | Cod sursa (job #198979)
Cod sursa(job #198979)
#include <stdio.h>
#include <string.h>
int n,m,a[1024];
int i,j,k,q,p,x,aux;
void update(int x, int v){
for(;x<=n;x+=x&(x-1)^x)
a[x]+=v;
}
void update2(int x, int v){
for(;x<=n;x+=x&(x-1)^x)
a[x]-=v;
}
int query(int x){
int r=0;
for(;x;x-=x^(x-1)&x)
r+=a[x];
return r;
}
int main(){
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
scanf("%d %d\n",&n,&m);
// char txt[131072];
for(i=1;i<=n;++i) //initializare
a[i]=0;
/*
gets(txt); //citire parsata
for(i=0,j=1;i<strlen(txt);++i)
if(txt[i]==' ')
{
update(j,aux);
++j;
aux=0;
}
else
aux=aux*10+txt[i]-'0'; //---
*/
for(i=1;i<=n;++i)
{
scanf("%d",&aux);
update(i,aux);
}
for(;m;--m){
scanf("%d %d %d",&k,&q,&p);
if(k)
printf("%d\n",query(p)-query(q-1));
else
update2(q,p);
}
return 0;
}