Pagini recente » Cod sursa (job #1718732) | Cod sursa (job #2056090) | Cod sursa (job #2330759) | Cod sursa (job #2783555) | Cod sursa (job #1213244)
#include<stdio.h>
#define MAXN 15005
#define LL long long
int N,C,S,K,P;
LL M,A[MAXN],Q,T;
void aduna(int poz,LL val)
{
C=0;
while( poz<=N )
{
A[poz]+=val;
while(!(poz & 1<<C)) C++;
poz+=(1<<C);
C+=1;
} //end while
}
void scade(int poz,LL val)
{
C=0;
while( poz<=N )
{
A[poz]-=val;
while(!(poz & 1<<C)) C++;
poz+=(1<<C);
C+=1;
} //end while
}
LL suma(int poz)
{
C=0,S=0;
while(poz>0)
{
S+=A[poz];
while(!(poz & (1<<C)) ) C++;
poz-=(1<<C);
C+=1;
}
return S;
}
int main() {
int i,j;
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
scanf("%lld %lld",&N,&M);
for(i=1;i<=N;i++) {
scanf("%lld",&T);
aduna(i,T);
}
for(i=1;i<=M;i++) {
scanf("%d%d%d",&K,&P,&Q);
if(K==0) scade(P,Q);
else printf("%lld\n",suma(Q)-suma(P-1));
}
return 0;
}