Pagini recente » Cod sursa (job #2525145) | Cod sursa (job #3258759) | Cod sursa (job #618175) | Cod sursa (job #2285425) | Cod sursa (job #1760869)
#include <iostream>
#include <cstdio>
using namespace std;
int m,n,aib[15001];
int nrZerouri(int x)
{
return x&(x^(x-1));
}
void inserare(int poz,int nr)
{
for(int i=poz;i<=n;i+=nrZerouri(i))
aib[i]+=nr;
}
void citire()
{
int x;
scanf("%d%d",&m,&n);
for(int i=1;i<=m;i++)
{
scanf("%d", &x);
inserare(i,x);
}
}
void update(int poz,int nr)
{
for(int i=poz;i<=n;i+=nrZerouri(i))
aib[i]-=nr;
}
int getSum(int poz)
{
int suma=0;
for(int i=poz;i>=1;i-=nrZerouri(i))
suma+=aib[i];
return suma;
}
int main()
{
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
citire();
int x,y,z;
for(int i=1;i<=n;i++)
{
scanf("%d%d%d",&x,&y,&z);
if(x)
{
printf("%d\n",getSum(z)-getSum(y-1));
}
else
{
update(y,z);
}
}
return 0;
}