Pagini recente » Cod sursa (job #296649) | Cod sursa (job #2596908) | Cod sursa (job #606727) | Cod sursa (job #2550009) | Cod sursa (job #528863)
Cod sursa(job #528863)
var a:array[0..16, 1..17000]of longint;
i,j,k,n,tip,x,y:word; f1, f2:text; m:longint;
function log2(n:word):word;
var k:longint;
begin
k:=0;
while n>0 do
begin
n:=n div 2;
inc(k);
end;
log2:=k;
end;
function sum(x:word):longint;
var s:longint; i:word;
begin
s:=0; i:=0;
while x>0 do
begin
if x mod 2 = 1
then s:=s+a[i,x];
x:=x div 2;
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 i:=n+1 to 1 shl k do a[0,i]:=0;
n:=1 shl k;
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 j:=0 to k do
begin
for i:=1 to n shr j do write(a[j,i], ' ');
writeln;
end;
writeln;
}
while m>0 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;
dec(m);
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.