Pagini recente » Cod sursa (job #767702) | Cod sursa (job #1269573) | Cod sursa (job #3037660) | Cod sursa (job #1149301) | Cod sursa (job #1425624)
#include <cstdio>
#define ub(x) (x&(-x))
using namespace std;
int aib[15010],n,m,i,j,x,a,b,tip;
void update(int x,int i)
{
for (int j=i;j<=n;j+=ub(j)) aib[j]+=x;
}
void scad(int x,int i)
{
for (int j=i;j<=n;j+=ub(j))
aib[j]-=x;
}
int s(int x)
{
int rez=0;
for (int i=x;i>0;i-=ub(i))
rez+=aib[i];
return rez;
}
int main()
{
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
scanf("%d %d", &n, &m);
for (i=1;i<=n;++i)
{
scanf("%d", &x);
update(x,i);
}
for (i=1;i<=m;++i)
{
scanf("%d %d %d", &tip, &a, &b);
if (tip==0)
scad(b,a);
else
printf("%d\n", s(b)-s(a-1));
}
return 0;
}