Pagini recente » Cod sursa (job #976858) | Cod sursa (job #1830930) | Cod sursa (job #2177860) | Cod sursa (job #1577399) | Cod sursa (job #1512738)
#include <cstdio>
using namespace std;
#define MAXN 15000
int n,m,x,y,z,i;
int s[MAXN];
int nxt(int x)
{
return (x^(x-1)&x);
}
void adauga_datorie(int poz, int val)
{
for(int i=poz; i<=n; i+=nxt(i))
s[i]+=val;
}
void scade_datorie(int poz, int val)
{
for(int i=poz; i<=n; i+=nxt(i))
s[i]-=val;
}
int sum(int poz)
{
int nrs=0;
for(int i=poz; i>=1; i-=nxt(i))
nrs+=s[i];
return nrs;
}
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);
adauga_datorie(i,x);
}
for(i=1; i<=m; i++)
{
scanf("%d%d%d",&x,&y,&z);
if(!x)
scade_datorie(y,z);
else
printf("%d\n",sum(z)-sum(y-1));
}
}