Cod sursa(job #1846952)

Utilizator smatei16Matei Staicu smatei16 Data 14 ianuarie 2017 10:39:10
Problema Datorii Scor 100
Compilator cpp Status done
Runda aib-uuri_cex Marime 0.57 kb
#include <cstdio>
#define zeros(x)((x^(x-1))&x)
using namespace std;
int n,m,aib[100003];
void Add(int x,int quantity){
int i;
for(i=x;i<=n;i+=zeros(i))
aib[i]+=quantity;
}
int compute(int x){
int i=0,ret=0;
for(i=x;i>0;i-=zeros(i))
    ret+=aib[i];
return ret;
}
int i,x,y,z;
int main()
{freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
scanf("%d %d",&n,&m);
for(i=1;i<=n;i++){
scanf("%d",&x);
Add(i,x);
}
for(i=1;i<=m;i++){
scanf("%d %d %d",&z,&x,&y);
if(z==1)printf("%d\n",compute(y)-compute(x-1));
else Add(x,-y);
}

    return 0;
}