Pagini recente » Cod sursa (job #439135) | Cod sursa (job #2162121) | Cod sursa (job #1348921) | Cod sursa (job #1157491) | Cod sursa (job #2386523)
#include <cstdio>
FILE* FIN=freopen("datorii.in","r",stdin);
FILE* FOUT=freopen("datorii.out","w",stdout);
using namespace std;
int v[17024][17],n,m,p;
void cit()
{
int i;
scanf("%d%d",&n,&m);
for(i=0;i<n;i++)
scanf("%d",&v[i][0]);
}
void form()
{
int i,j,l;
for(i=1,l=(n+1)/2;l>1;i++,l=(l+1)/2)
for(j=0;j<l;j++)
v[j][i]=v[j+j][i-1]+v[j+j+1][i-1];
v[0][i]=v[0][i-1]+v[1][i-1];
i++;
p=i;
}
void act()
{
int x,i,y;
scanf("%d%d",&x,&y);
for(i=0,x--;i<p;i++,x>>=1)
v[x][i]-=y;
}
long long sum(int z)
{
long long sol;
int i;
for(i=0,sol=0;z;i++,z>>=1)
if(z%2)
sol+=v[z-1][i];
return sol;
}
void af()
{
int x,y;
scanf("%d%d",&x,&y);
printf("%lld\n",sum(y)-sum(x-1));
}
int main()
{
int i,q;
cit();
form();
for(i=0;i<m;i++)
{
scanf("%d",&q);
if(!q)
act();
else
af();
}
return 0;
}