Pagini recente » Cod sursa (job #2876489) | Cod sursa (job #224754) | Rating POPESCU ERIK MAXIMILIAN (ERIKATOR) | Cod sursa (job #2378531) | Cod sursa (job #2125)
Cod sursa(job #2125)
program datorii;
var a,c:array[1..15000] of qword;
n:1..15000;
i,p,q,poz,l,m:longint;
cod:0..1;
k,j:qword;
f,g:text;
begin
assign(f,'datorii.in');
reset(f);
readln(f,n,m);
for i:=1 to n do
read(f,a[i]);
readln(f);
i:=0;
repeat
i:=i+1;
poz:=0;
if (i and 1)=1 then p:=1
else begin
while (i and (2 shl poz))=0 do
poz:=poz+1;
p:=i-(2 shl poz)+1;
end;
c[i]:=0;
for q:=p to i do
c[i]:=c[i]+a[q];
until i=n;
assign(g,'datorii.out');
rewrite(g);
for l:=1 to m do begin
readln(f,cod,p,q);
if cod=0 then begin
while p<=n do
begin
c[p]:=c[p]-q;
p:=p+(p xor (p-1)) and p;
end;
end
else begin
k:=0;
while q>0 do begin
k:=k+c[q];
q:=q-(q xor (q-1)) and q;
end;
j:=0;
p:=p-1;
while p>0 do begin
j:=j+c[p];
p:=p-(p xor (p-1)) and p;
end;
writeln(g,k-j);
end;
end;
close(f);
close(g);
end.