Pagini recente » Cod sursa (job #1873910) | Cod sursa (job #2608777) | Cod sursa (job #2559475) | Cod sursa (job #105316) | Cod sursa (job #932781)
Cod sursa(job #932781)
const mx=1000;
var c: array[0..mx] of longint;
f1,f2: text;
cod,a,b, n,m,i: longint;
Function nz(x: longint): longint;
var p: longint;
Begin
p:=1;
while x mod 2 =0 do
Begin
p:=p*2;
x:= x div 2;
end;
nz:=p;
end;
Procedure modificare(i, x: longint);
var dx: longint;
Begin
while i<=n do
Begin
c[i]:=c[i]-x;
i:=i+nz(i);
end;
end;
Function interogare(st,dr: longint): longint;
var p,sms, smd: longint;
Begin
p:=st-1; sms:=0;
while p>0 do
Begin
sms:=sms+c[p];
p:=p-nz(p);
end;
p:=dr; smd:=0;
while p>0 do
Begin
smd:=smd+c[p];
p:=p-nz(p);
end;
interogare:=smd-sms;
end;
Begin
assign(f1, 'datorii.in');
assign(f2, 'datorii.out');
reset(f1);
readln(f1,n,m);
for i:=1 to n do
Begin
read(c[i]);
c[i]:=c[i]+ interogare(i-nz(i)+1,i) ;
end;
for i:=1 to m do
BEgin
readln(cod,a,b);
if cod=1 then modificare(a,b)
else writeln(f2,interogare(a,b));
end;
close(f1); close(f2);
End.