Pagini recente » Cod sursa (job #467861) | Cod sursa (job #349311) | Cod sursa (job #1368724) | Cod sursa (job #307038) | Cod sursa (job #718861)
Cod sursa(job #718861)
#include<fstream>
#include<stdio.h>
#define zeros(x) ((x^(x-1))&x)
int n, sum;
int aib[15000];
void actualizare(int poz, int val )
{
int i;
for(i=poz;i<=n;i+=zeros(i))
{
aib[i]+=val;
}
}
void interogare (int st, int dr)
{
if(st==1)
{
int i;
for(i=dr;i>=1;i-=zeros(i))
sum+=aib[i];
}
else
{
interogare(1,st-1);
sum=-sum;
interogare(1,dr);
}
}
void rezolv()
{
int n,m,i,x,y,z;
freopen ("datorii.in","r",stdin);
freopen ("datorii.out","w",stdout);
scanf ("%d %d\n", &n,&m);
for(i=1;i<=n;i++)
{
scanf ("%d", &x);
actualizare(i,x);
}
for(i=1;i<=m;i++)
{scanf("%d %d %d\n",&x, &y, &z);
if(x)
{
sum=0;
interogare(y,z);
printf("%d\n", sum);
}
else
{
actualizare(y,-z);
}
}
}
int main()
{
rezolv();
return 0;
}