Pagini recente » Cod sursa (job #819963) | Cod sursa (job #1159648) | Cod sursa (job #2581764) | Cod sursa (job #1513433) | Cod sursa (job #589770)
Cod sursa(job #589770)
var a:array[0..20,1..100000] of longint;
buf:array[1..2200000] of byte;
n,m,i,j,x,y,k,d:longint;
f,g:text;
function min(a,b:longint):longint;
begin
min:=a;
if b<min then min:=b;
end;
begin
assign(f,'rmq.in');
assign(g,'rmq.out');
reset(f);
rewrite(g);
settextbuf(g,buf);
settextbuf(f,buf);
readln(f,n,m);
k:=0;
i:=1;
while i*2<n do
begin
i:=i*2;
inc(k);
end;
for i:=1 to n do
readln(f,a[0,i]);
for i:=1 to k do
for j:=1 to n do
if j+(1 shl (i-1)) > n then break else
begin
a[i,j]:=min(a[i-1,j],a[i-1,j+(1 shl (i-1))]);
end;
for i:=1 to m do
begin
readln(f,x,y);
d:=y-x;
k:=0;
while 1 shl (k+1)<=d do inc(k);
writeln(g,min(a[k,x],a[k,y-(1 shl k)+1]));
end;
close(g);
end.