Pagini recente » Cod sursa (job #3288749) | Cod sursa (job #1584766) | Istoria paginii preoni-2008/clasament/runda-1/11-12 | Cod sursa (job #1903856) | Cod sursa (job #166119)
Cod sursa(job #166119)
program rmq;
const
fin='rmq.in';
fout='rmq.out';
nmax=100000;
var
a,lg:array[0..nmax] of longint;
i,j,l,maxlog,n,m,x,y:longint;
min:array[1..nmax,0..18] of longint;
function minim(x,y:longint):longint;
begin
if x<y then
minim:=x
else
minim:=y;
end;
begin
assign(input,fin);
assign(output,fout);
rewrite(output);
reset(input);
readln(n,m);
lg[1]:=0;
for i:=2 to n do
lg[i]:=lg[i shr 1]+1;
for i:=1 to n do
readln(a[i]);
maxlog:=lg[n];
for i:=1 to n do
min[i,0]:=a[i];
for j:=1 to maxlog do
for i:=1 to n-(1 shl j)+1 do
if min[i,j-1]<min[i+(1 shl (j-1)),j-1] then
min[i,j]:=min[i,j-1]
else
min[i,j]:=min[i+(1 shl (j-1)),j-1];
for i:=1 to m do
begin
readln(x,y);
l:=lg[y-x+1];
writeln(minim(min[x,l],min[y-(1 shl l)+1,l]));
end;
close(output);
close(input);
end.