Pagini recente » Cod sursa (job #760166) | Cod sursa (job #974219) | Cod sursa (job #759110) | Monitorul de evaluare | Cod sursa (job #470083)
Cod sursa(job #470083)
#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 %d %d",&val,&a,&b);
actualizare(i,val);
}
while(m--) {
scanf("%d",&op);
if(!op) actualizare(a,-b);
else printf("%d\n",interogare(b)-interogare(a-1));
}
return 0;
}