Pagini recente » Cod sursa (job #1336303) | Cod sursa (job #1126424) | Cod sursa (job #1713656) | Cod sursa (job #242466) | Cod sursa (job #1582148)
type sir=array[1..15000] of integer;
var f,g:text;
a,aib:sir;
m,i:longint;
n,v,t,p,q:integer;
function exp(i:integer):integer;
var k:integer;
begin
k:=0;
while i mod 2=0 do begin
i:=i div 2;
inc(k);
end;
exp:=k;
end;
function suma(x:integer):longint;
var s:longint;
begin
s:=0;
write(x,' : ');
while x>0 do begin
s:=s+aib[x];
x:=x and (x-1);
end;
suma:=s;
end;
procedure formare;
var k,j:integer;
begin
for i:=1 to n do
if i mod 2=1 then aib[i]:=a[i]
else begin
k:=exp(i);
if k=1 then aib[i]:=a[i]+a[i-1]
else if k=2 then for j:=i downto i-3 do
aib[i]:=aib[i]+a[j]
else aib[i]:=a[i]+suma(i-1);
end;
end;
procedure achitare(t,v:integer;var aib:sir);
begin
repeat
aib[t]:=aib[t]-v;
t:=t+(t and (-t));
until t>n;
end;
procedure citire(var n:integer;var m:longint;var a:sir);
var c:byte;
begin
assign(f,'datorii.in');reset(f);
assign(g,'datorii.out');rewrite(g);
read(f,n,m);
for i:=1 to n do
read(f,a[i]);
formare;
for i:=1 to m do begin
read(f,c);
if c=0 then begin
read(f,t,v);
achitare(t,v,aib);
end;
if c=1 then begin
read(f,p,q);
writeln(g,suma(q)-suma(p-1))
end;
end;
close(f);
close(g);
end;
begin
citire(n,m,a);
end.