Pagini recente » Cod sursa (job #38797) | Cod sursa (job #2423847) | Cod sursa (job #2869962) | Cod sursa (job #2720010) | Cod sursa (job #118279)
Cod sursa(job #118279)
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 y:=1 shl nr;
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-((x)xor(x-1))and(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:=((i)xor(i-1))and(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.