Pagini recente » Cod sursa (job #1553994) | Cod sursa (job #2517446) | Cod sursa (job #2669538) | Cod sursa (job #2520031) | Cod sursa (job #1410369)
program rmq;
var f,g:text;
d:array[0..20,1..100000] of longint;
n,m,i,j,x,y,k:longint;
lg:array[1..100000] of longint;
bufin,bufout:array[1..1 shl 16] of byte;
function min(st,dr:longint):longint;
var i:longint;
begin
min:=st;
if min>dr then min:=dr;
end;
begin
assign(f,'rmq.in'); reset(f);
assign(g,'rmq.out'); rewrite(g);
settextbuf(f,bufin);
settextbuf(g,bufout);
readln(f,n,m);
lg[1]:=0;
for i:=2 to n do
lg[i]:=lg[i div 2]+1;
for i:=1 to n do
readln(f,d[0,i]);
for i:=1 to lg[n] do
for j:=1 to n-(1 shl (i-1)) do
d[i,j]:=min(d[i-1,j],d[i-1,j+(1 shl (i-1))]);
for i:=1 to m do
begin
readln(f,x,y);
k:=lg[y-x+1];
writeln(g,min(d[k,x],d[k,y-(1 shl k)+1]));
end;
close(f);
close(g);
end.