Pagini recente » Cod sursa (job #80863) | Cod sursa (job #347445) | Cod sursa (job #1654866) | Cod sursa (job #28845) | Cod sursa (job #381875)
Cod sursa(job #381875)
program datorii_xp;
var
Napok: array[1..15000] of word;
Bin: array[1..100000] of longint;
n, x, a, b: word;
m, r, i, j, poz: longint;
f, g: text;
begin
for i := 1 to n do Bin[i] := 0;
Assign(f, 'datorii.in');
Assign(g, 'datorii.out');
Reset(f);
ReWrite(g);
ReadLn(f, n, m);
for i := 1 to n do
begin
Read(f, Napok[i]);
for j := i - (i xor (i and (i - 1))) + 1 to i do
Bin[i] := Bin[i] + Napok[j];
end;
for i := 1 to m do
begin
Read(f, x);
Case x of
0: begin
ReadLn(f, a, b);
poz := a;
while poz <= n do
begin
Bin[poz] := Bin[poz] - b;
poz := poz + (poz xor (poz and (poz - 1)));
end;
end;
1: begin
r := 0;
ReadLn(f, a, b);
poz := b;
while poz > 0 do
begin
r := r + Bin[poz];
poz := poz - (poz xor (poz and (poz - 1)));
end;
poz := a - 1;
while poz > 0 do
begin
r := r - Bin[poz];
poz := poz - (poz xor (poz and (poz - 1)));
end;
WriteLn(g,r);
end;
end;
end;
Close(f);
Close(g);
end.