Pagini recente » Cod sursa (job #2933084) | Cod sursa (job #2682097) | Cod sursa (job #2857033) | Cod sursa (job #1821130) | Cod sursa (job #766279)
Cod sursa(job #766279)
const inf = 1000001;
var t,a:array[1..4000000] of longint;
i,j,n,m,l,r,k:longint;
function min(a,b:longint):longint;
begin
if a<b then min:=a else min:=b;
end;
procedure build;
var i:longint;
begin
for i:=n+1 to n shl 1 do t[i]:=a[i - n];
for i:=n downto 1 do t[i]:=min(t[i shl 1],t[(i shl 1) + 1]);
end;
function rmq(l,r:longint):longint;
var res:longint;
begin
res:=inf; l:=l+n; r:=r+n;
while (l<=r) do
begin
if l mod 2 <> 0 then res:=min(res,t[l]);
if r mod 2 = 0 then res:=min(res,t[r]);
l:=(l + 1) shr 1; r:=(r - 1) shr 1;
end;
rmq:=res;
end;
Begin
Assign(input,'rmq.in');
reset(input);
Assign(output,'rmq.out');
rewrite(output);
read(n,k);
for i:=1 to n do read(a[i]);
build;
for i:=1 to k do
begin
read(l,r);
writeln(rmq(l,r));
end;
end.