Pagini recente » Cod sursa (job #2317029) | Cod sursa (job #1692837) | Cod sursa (job #2754190) | Cod sursa (job #2092314) | Cod sursa (job #184074)
Cod sursa(job #184074)
program p_rmq;
const MAXL = 16;
MAXN = 100000;
var f,fout:text;
n,m,i,k,a,b,lg:longint;
exp:array[0..MAXL] of longint;
log:array[1..MAXN] 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;
assign(fout,'rmq.out');
assign(f,'rmq.in');
rewrite(fout);
reset(f);
readln(f,n,m);
for i:=2 to n do
log[i]:=log[i div 2]+1;
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.