Pagini recente » Cod sursa (job #2237091) | Cod sursa (job #2222856) | Monitorul de evaluare | Cod sursa (job #2835769) | Cod sursa (job #202161)
Cod sursa(job #202161)
#include <cstdio>
#define IN "datorii.in"
#define OUT "datorii.out"
#define FOR(i,a,b) for(int i=a;i<=b;++i)
#define N_MAX 1<<14
int suma,M,N;
int v[N_MAX];
void add(int poz,int x);
void scan()
{
int x;
freopen(IN, "r",stdin);
freopen(OUT, "w",stdout);
scanf("%d%d",&N,&M);
FOR(i,1,N)
{
scanf("%d",&x);
add(i,+x);
}
}
void add(int poz,int x)
{
for(int i = poz; i<=N ; i = (i | (i-1) )+1 )
v[i] += x;
}
int query(int i)
{
int aux = 0;
for(; i ; i &= i-1)
aux += v[i];
return aux;
}
void solve()
{
int t,x,y;
FOR(i,1,N)
printf("%d ", v[i]);
printf("\n");
FOR(i,1,M)
{
scanf("%d%d%d\n", &t,&x,&y);
if(!t)
{
add(x,-y);
FOR(i,1,N)
printf("%d ", v[i]);
printf("\n");
}
else
printf("%d\n",query(y)-query(x-1));
}
}
int main()
{
scan();
solve();
return 0;
}