Pagini recente » Cod sursa (job #311962) | Cod sursa (job #2215690) | Cod sursa (job #1250740) | Cod sursa (job #235575) | Cod sursa (job #2393868)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int n,m,a[100002],t,k,j,l;
void add(int i,int q)
{
for(;i<=n;i=i+((i^(i-1))&i)){a[i]+=q;}
}
int aic(int i)
{
int s=0;
for(;i>0;i=i-((i^(i-1))&i))s+=a[i];
return s;
}
int src(int q)
{
int p=1;
while(p<n)p*=2;
for(int i=0;p>0;p/=2)
{
if(i+p<=n)
{
if(q>=a[i+p])
{
i+=p;q-=a[i];
if(q==0)return i;
}
}
}
return -1;
}
int main()
{
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i=1;i<=n;++i)
{
scanf("%d",&t);
add(i,t);
}
for(int g=1;g<=m;++g)
{
scanf("%d",&k);
switch(k)
{
case 0:
scanf("%d%d",&k,&t);
add(k,-t);
break;
case 1:
scanf("%d%d",&k,&t);
printf("%d\n",aic(t)-aic(k-1));
break;
}
}
}