Pagini recente » Cod sursa (job #119282) | Cod sursa (job #2848875) | Cod sursa (job #2405562) | Cod sursa (job #2399024) | Cod sursa (job #641211)
Cod sursa(job #641211)
#include <fstream>
#include <stdlib.h>
#define zero(n) ((n^(n-1))&n)
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
void update(int,int,int*,int);
int query(int,int*);
int main() {
int *t,i,n,m,k=0,op,a,b,nr;
f>>n>>m;
t=(int *)calloc(n+1,sizeof(int));
for(i=1;i<=n;i++) {
f>>nr;
update(nr,i,t,n);
}
for(i=1;i<=m;i++) {
f>>op>>a>>b;
if(op) {
g<<query(b,t)-query(a-1,t)<<"\n";
} else {
update(-b,a,t,n);
}
}
return 0;
}
void update(int val,int poz,int *a,int n) {
int k;
for(k=poz;k<=n;k+=zero(k)) {
a[k]+=val;
}
}
int query(int i,int *a) {
int k,s=0;
for(k=i;k>0;k-=zero(k)) {
s+=a[k];
}
return s;
}