Pagini recente » Cod sursa (job #1060099) | Cod sursa (job #762826) | Cod sursa (job #890488) | Cod sursa (job #538817) | Cod sursa (job #184072)
Cod sursa(job #184072)
program p_rmq;
const MAXL = 16;
MAXN = 100000;
var f,fout:text;
n,m,i,k,a,b,lg:longint;
log,exp:array[0..MAXL] of longint;
rmq:array[0..MAXL,1..MAXN] of longint;
function min(a,b:longint):longint;
begin
if(a<b) then min:=a
else min:=b;
end;
begin
exp[0]:=1;
for i:=1 to MAXL do
exp[i]:=2*exp[i-1];
log[1]:=0;
for i:=2 to MAXL do
log[i]:=log[i div 2]+1;
assign(fout,'rmq.out');
assign(f,'rmq.in');
rewrite(fout);
reset(f);
readln(f,n,m);
for i:=1 to n do
readln(f,rmq[0,i]);
for k:=1 to log[n] do
begin
i:=1;
while(i+exp[k]-1 <= n) do
begin
rmq[k,i]:=min(rmq[k-1,i],rmq[k-1,i+exp[k-1]]);
inc(i);
end;
end;
for i:=1 to m do
begin
readln(f,a,b);
lg:=log[b-a+1];
writeln(fout,min(rmq[lg,a],rmq[lg,b-exp[lg]+1]));
end;
close(f);
close(fout);
end.