Pagini recente » Cod sursa (job #309621) | Cod sursa (job #1174771) | Cod sursa (job #1359643) | Cod sursa (job #1775705) | Cod sursa (job #161570)
Cod sursa(job #161570)
var v:array[0..100000,0..30]of longint;
a,l:array[0..100000]of longint;
n,i,j,k,m,u,x,y,o:longint;
f,q:text;
function min(a,b:longint):longint;
begin
if a<b then min:=a
else min:=b;
end;
begin
assign(f,'rmq.in');
assign(q,'rmq.out');
rewrite(q);
reset(f);
read(f,n,m);
for i:=1 to n do
begin
if 1 shl (l[i-1]+1)=i then l[i]:=l[i-1]+1
else l[i]:=l[i-1];
read(f,a[i]);
v[i,0]:=a[i];
end;
while 1 shl(u+1)<=n do
u:=u+1;
for j:=1 to u do
for i:=1 to n-(1 shl j)+1 do
v[i,j]:=min(v[i,j-1],v[i+(1 shl(j-1)),j-1]);
for i:=1 to m do
begin
read(f,x,y);
o:=l[y-x];
writeln(q,min(v[x][o],v[y-(1 shl o)+1][o]));
end;
close(f);
close(q);
end.