Pagini recente » Cod sursa (job #1709833) | Cod sursa (job #1426638) | Cod sursa (job #267836) | Cod sursa (job #2657146) | Cod sursa (job #1183176)
#include <stdio.h>
#define ub(x) (x&(-x))
using namespace std;
FILE *f=fopen("datorii.in","r");
FILE *g=fopen("datorii.out","w");
long n,i,x,m,y,v[100001],a,b,t,sum,st,dr,mij;
void add(long x,long val)
{
int i;
for (i=x;i<=n;i+=ub(i))
v[i]+=val;
}
void dif (long x,long val)
{
int i;
for (i=x;i<=n;i+=ub(i))
v[i]-=val;
}
long suma(long x)
{
long s=0,i;
for (i=x;i>0;i-=ub(i))
s+=v[i];
return s;
}
int main()
{
fscanf(f,"%ld%ld",&n,&m);
for (i=1;i<=n;i++)
{
fscanf(f,"%ld",&x);
add(i,x);
}
for (i=1;i<=m;i++)
{
fscanf(f,"%ld",&t);
fscanf(f,"%ld%ld",&a,&b);
if (t==0)
dif(a,b);
else
{
sum=suma(b)-suma(a-1);
fprintf(g,"%ld\n",sum);
}
}
fclose(f);
return 0;
}