Pagini recente » Cod sursa (job #2653565) | Cod sursa (job #1558254) | Cod sursa (job #2775363) | Cod sursa (job #3211663) | Cod sursa (job #1168516)
program rmq;
var a:array[1..100000] of longint;
m:array[1..100000,0..18]of longint;
n,t,i,j,x,y,k:longint;
function min(a,b:longint):longint;
begin
if a<b then min:=a else min:=b;
end;
begin
assign(input,'rmq.in');
assign(output,'rmq.out');
reset(input);
rewrite(output);
readln(n,t);
for i:=1 to n do
readln(a[i]);
for i:=1 to n do m[i,0]:=a[i];
j:=1;
while (1 shl j<=n) do
begin
for i:=1 to n do
m[i,j]:=min(m[i,j-1],m[i + 1 shl (j-1),j-1]);
inc(j);
end;
for i:=1 to t do
begin
readln(x,y);
k:=1;
while 1 shl k<x-y+1 do inc(k);
dec(k);
writeln(min(m[x,k],m[y-1 shl k+1,k]));
end;
close(output);
end.