Pagini recente » Cod sursa (job #688596) | Cod sursa (job #263481) | Cod sursa (job #138707) | Cod sursa (job #1248592) | Cod sursa (job #922107)
Cod sursa(job #922107)
Program p1;
var fi,fo:text; b:array[0..1 shl 20] of char;
i,j,n,m,lim,x,y,aux,k:longint; r:array[0..100005,0..18] of longint;
a:array[0..100005] of longint;
Function min(x,y:longint):longint;
begin
if a[x]<a[y] then min:=x else min:=y;
end;
Procedure rmq;
begin
lim:=trunc(ln(n)/ln(2));
for j:=1 to lim do
for i:=1 to n+1-(1 shl j) do
r[i,j]:=min(r[i,j-1],r[i+(1 shl (j-1)),j-1]);
end;
begin
assign(fi,'rmq.in'); reset(fi);
assign(fo,'rmq.out'); rewrite(fo);
settextbuf(fi,b); readln(fi,n,m);
for i:=1 to n do begin readln(fi,a[i]); r[i,0]:=i; end;
rmq;
for i:=1 to m do begin
readln(fi,x,y);
aux:=trunc(ln(y+1-x)/ln(2));
k:=1 shl aux;
writeln(fo,a[min(r[x,aux],r[y+1-k,aux])]);
end;
close(fi); close(fo);
end.