Pagini recente » Cod sursa (job #2615059) | Cod sursa (job #2173167) | Cod sursa (job #2526522) | Cod sursa (job #1812651) | Cod sursa (job #528363)
Cod sursa(job #528363)
var a:array[0..16, 1..17000]of longint;
i,j,k,n,m,tip,x,y:integer; f1, f2:text;
function log2(n:integer):integer;
var k:integer;
begin
k:=0;
while n>0 do
begin
n:=n div 2;
inc(k);
end;
log2:=k;
end;
function sum(x:integer):longint;
var s:longint; i:integer;
begin
s:=0; i:=0;
while x>0 do
begin
if x mod 2 = 1
then inc(s, a[i,x]);
x:=x shr 1;
inc(i);
end;
sum:=s;
end;
begin
assign(f1, 'datorii.in');
reset(f1);
assign(f2, 'datorii.out');
rewrite(f2);
readln(f1, n,m);
for i:=1 to n do read(f1, a[0,i]);
k:=log2(n);
for j:=1 to k do
for i:=1 to n shr j do
a[j,i]:=a[j-1,i*2]+a[j-1,i*2-1];
for i:=1 to m do
begin
readln(f1, tip, x,y);
if tip = 0
then begin
for j:=0 to k do
begin
dec(a[j, x], y);
x:=(x-1) div 2 + 1;
end;
end
else begin
writeln(f2, sum(y)-sum(x-1));
end
end;
{
for j:=0 to k do
begin
for i:=1 to n shr j do write(a[j,i], ' ');
writeln;
end;
}
close(f1);
close(f2);
end.