Pagini recente » Cod sursa (job #953872) | Cod sursa (job #873570) | Cod sursa (job #1080486) | Cod sursa (job #97313) | Cod sursa (job #718931)
Cod sursa(job #718931)
#include<fstream>
#include<stdio.h>
#define zeros(x) ((x ^ (x-1)) & x)
using namespace std;
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();
fclose(stdin);
fclose(stdout);
return 0;
}