Pagini recente » Cod sursa (job #2156679) | Cod sursa (job #2524520) | Cod sursa (job #2457280) | Cod sursa (job #722917) | Cod sursa (job #218537)
Cod sursa(job #218537)
#include <cstdio>
#define MAXIMUS 15001
#define f(x)((x^(x-1))&x)
using namespace std;
int n,m,arb[MAXIMUS],val;
void update(int pozitie,int valoare,int sign)
{
while(pozitie<=n)
{
if(sign==1)
arb[pozitie]+=valoare;
else
arb[pozitie]-=valoare;
pozitie+=f(pozitie);
}
}
int solve(int x)
{
int sum=0;
while(x)
{
sum+=arb[x];
x-=f(x);
}
return sum;
}
int main(){
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++)
{
scanf("%d",&val);
update(i+1,val,1);
}
int type,x,y;
for(int i=0;i<m;i++)
{
scanf("%d%d%d",&type,&x,&y);
if(type==1)
printf("%d\n", solve(y)-solve(x-1));
else
update(x,y,0);
}
fclose(stdout);
return 0;
}