Pagini recente » Cod sursa (job #2013667) | Cod sursa (job #124090) | Cod sursa (job #450187) | Cod sursa (job #1973887) | Cod sursa (job #1760876)
#include <iostream>
#include <cstdio>
using namespace std;
int m,n,aib[100002];
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;
}