Pagini recente » Cod sursa (job #61423) | Cod sursa (job #532985) | Cod sursa (job #1357610) | Cod sursa (job #61410) | Cod sursa (job #470086)
Cod sursa(job #470086)
#include <cstdio>
#include <iostream>
using namespace std;
#define DN 100001
int c[DN],n,m;
void actualizare(int ind,int val) {
int poz=0;//pozitia celui mai nesemnificativ bit cu valoarea 1
while(ind<=n) {
c[ind]+=val;
while(!(ind&1<<poz)) ++poz;
ind+=1<<poz;
++poz;
}
}
int interogare(int dr) {
int s=0,poz=0;
while(dr>0) {
s+=c[dr];
while(!(dr&1<<poz)) ++poz;
dr-=1<<poz;
++poz;
}
return s;
}
int main()
{
int i,val,op,a,b;
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
scanf("%d %d",&n,&m);
for(i=1; i<=n; i++) {
scanf("%d",&val);
actualizare(i,val);
}
while(m--) {
scanf("%d %d %d",&op,&a,&b);
if(!op) actualizare(a,-b);
else printf("%d\n",interogare(b)-interogare(a-1));
}
return 0;
}