Pagini recente » Cod sursa (job #1584310) | Cod sursa (job #1484939) | Cod sursa (job #404485) | Cod sursa (job #2271498) | Cod sursa (job #855428)
Cod sursa(job #855428)
#include <fstream>
using namespace std;
ifstream fi("datorii.in");
ofstream fo("datorii.out");
long n,m,i,j,a[100000],op,x,y;
void scade(long poz,long val){
long z=0;
a[poz]-=val;
while (poz<=n){
while (!(poz & 1<<z)) z++;
poz+=1<<z;
a[poz]-=val;
}
}
long get(long x){
long aux=a[x],z=0;
while (x){
while (!(x & 1<<z)) z++;
x-=1<<z;
aux+=a[x];
}
return aux;
}
long suma(long st,long dr){
return (get(dr)-get(st-1));
}
int main(){
fi >> n >> m;
for (i=1; i<=n; i++){
fi >> x;
scade(i,x*-1);
}
for (i=1; i<=m; i++){
fi >> op >> x >> y;
if (op) fo << suma(x,y) << "\n"; else scade(x,y);
}
return 0;
}