Pagini recente » Cod sursa (job #2850028) | Cod sursa (job #2404375) | Cod sursa (job #1885875) | Cod sursa (job #534978) | Cod sursa (job #1183159)
#include <cstdio>
#include <fstream>
#define ub(x) (x&(-x))
using namespace std;
FILE *f=fopen("datorii.in","r");
FILE *g=fopen("datorii.out","w");
int v[16000],a[16000],n,m;
int sum(int p)
{int i,s=0;
for (i=p;i>=1;i-=ub(i)) s+=a[i];
return s;
}
void take(int p,int val)
{int i;
for (i=p;i<=n;i+=ub(i)) a[i]-=val;
}
int main()
{int i,j,x,y,op;
fscanf(f,"%d %d",&n,&m);
for (i=1;i<=n;i++) fscanf(f,"%d",&v[i]);
for (i=1;i<=n;i++) for (j=i-ub(i)+1;j<=i;j++) a[i]+=v[j];
for (i=1;i<=m;i++)
{fscanf(f,"%d %d %d",&op,&x,&y);
if (op==0) take(x,y);
else fprintf(g,"%d\n",sum(y)-sum(x-1));
}
return 0;
}