Pagini recente » Cod sursa (job #839850) | Cod sursa (job #1747722) | Cod sursa (job #2825585) | Cod sursa (job #2498559) | Cod sursa (job #118272)
Cod sursa(job #118272)
type sir=array[1..15000] of integer;
var a,c:sir;
f,g:text;
m:longint;
n,z,y,i,j:integer;
x:integer;
function putere(x:integer):integer;
var nr,y,i:integer;
begin
y:=1; nr:=0;
while x mod 2 = 0 do
begin
inc(nr);
x:=x div 2;
end;
if nr<>0 then for i:=1 to nr do y:=y*2;
putere:=y;
end;
function interval(x:integer):integer;
var s:integer;
begin
s:=0;
while x>0 do
begin
s:=s+c[x];
x:=x-putere(x);
end;
interval:=s;
end;
begin
assign(f,'datorii.in'); reset(f);
assign(g,'datorii.out'); rewrite(g);
readln(f,n,m);
for i:=1 to n do read(f,a[i]);
readln(f);
for i:=1 to n do
begin
y:=putere(i);
for j:=i+1-y to i do
c[i]:=c[i]+a[j];
end;
while not eof(f) do
begin
readln(f,x,y,z);
if x=0 then
while y<=n do
begin
c[y]:=c[y]-z;
y:=y+putere(y);
end
else writeln(g,interval(z)-interval(y-1));
end;
close(g);
end.