Cod sursa(job #1183159)

Utilizator badea_adi1999Badea Adrian Catalin badea_adi1999 Data 8 mai 2014 16:04:56
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#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;
}