Pagini recente » Cod sursa (job #2631258) | Cod sursa (job #199885) | Cod sursa (job #2292926) | Cod sursa (job #1166245) | Cod sursa (job #1513198)
#include <iostream>
#include <fstream>
#define nmax 15005
using namespace std;
int n,m;
int aib[nmax];
int x;
int tip,a,b;
int pow(int x)
{
return (x ^ (x-1) & x);
}
void update(int i)
{
for(int j=i;j<=n;)
{
aib[j]+=x-b;
j+=pow(j);
}
}
void read()
{
scanf("%d %d",&n,&m);
for(int i=1;i<=n;i++)
{
scanf("%d ",&x);
update(i);
}
x=0;
}
int query(int i)
{
int sum=0;
for(int j=i;j>=1;)
{
sum+=aib[j];
j-=pow(j);
}
return sum;
}
void solve()
{
for(int i=1;i<=m;i++)
{
scanf("%d %d %d",&tip,&a,&b);
if(tip==0)
{
update(a);
}
if(tip==1)
{
printf("%d\n",query(b)-query(a-1));
}
}
}
int main()
{
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
read();
solve();
return 0;
}