Pagini recente » Cod sursa (job #337136) | Cod sursa (job #1167431) | Cod sursa (job #2028976) | Cod sursa (job #1174712) | Cod sursa (job #162285)
Cod sursa(job #162285)
var v:array[0..30,0..100000]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[j,i]:=min(v[j-1,i],v[j-1,i+(1 shl(j-1))]);
for i:=1 to m do
begin
read(f,x,y);
o:=l[y-x];
writeln(q,min(v[o][x],v[o][y-(1 shl o)+1]));
end;
close(f);
close(q);
end.