Pagini recente » Cod sursa (job #930450) | Cod sursa (job #2559854) | Cod sursa (job #627348) | Cod sursa (job #2482116) | Cod sursa (job #780747)
Cod sursa(job #780747)
Const
tfi = 'aib.in';
tfo = 'aib.out';
Type
arr1 = array[1..100001] of longint;
Var
fi,fo : text;
N,M : longint;
T : arr1;
(*--------------------------------------*)
Procedure update(i, val : longint);
begin
while i<= n do
begin
T[i] := T[i] + val;
i := i + i and (-i);
end;
end;
(*--------------------------------------*)
Function get(i : longint): int64;
begin
Get := 0;
while i > 0 do
begin
get := get + T[i];
i := i - i and (-i);
end;
end;
(*--------------------------------------*)
function find(x : longint): longint;
var
i : longint;
begin
for i := 1 to n do
if get(i) = x then exit(i);
exit(-1);
end;
(*--------------------------------------*)
Procedure nhap;
var
i,x,k,j,val,s,f : longint;
begin
assign(fo,tfo); rewrite(fo);
assign(fi,tfi); reset(fi);
read(fi,N,M);
for i := 1 to n do
begin
read(fi,x);
update(i,x);
end;
For i := 1 to M do
begin
read(fi,k);
if k = 0 then
begin
read(fi,j,val);
update(j,val);
end
else if k = 1 then
begin
read(fi,s,f);
writeln(fo,get(f)-get(s-1));
end
else if k = 2 then
begin
read(fi,val);
writeln(fo,find(val));
end;
end;
close(fi); close(fo);
end;
(*--------------------------------------*)
(*--------------------------------------*)
(*--------------------------------------*)
(*--------------------------------------*)
BEGIN
nhap;
END.