Pagini recente » Cod sursa (job #2894970) | Cod sursa (job #1829172) | Cod sursa (job #1201006) | Cod sursa (job #2935770) | Cod sursa (job #1213437)
program rmq;
var bufin,bufout:array [1..100000] of byte;
n,m,i,j,k,pow,l,r:longint;
a:array [0..16,1..100000] of longint;
bin:array [0..17] of longint;
function min(u,v:longint):longint;
begin
if u<v then min:=u else min:=v;
end;
begin
assign(input,'rmq.in');
reset(input);
settextbuf(input,bufin);
assign(output,'rmq.out');
rewrite(output);
settextbuf(output,bufout);
readln(n,m);
for i:=1 to n do readln(a[0,i]);
pow:=2; j:=1;
while pow<=n do
begin
for i:=1 to n-pow+1 do
if a[j-1,i]<a[j-1,i+pow shr 1] then a[j,i]:=a[j-1,i]
else a[j,i]:=a[j-1,i+pow shr 1];
{ a[j,i]:=min(a[j-1,i],a[j-1,i+pow shr 1]);}
pow:=pow shl 1;inc(j);
end;
bin[0]:=1;
for i:=1 to 17 do bin[i]:=bin[i-1] shl 1;
for i:=1 to m do
begin
readln(l,r);
k:=0;
while bin[k]<=r-l+1 do
begin
inc(k);
end;
dec(k);
if a[k,l]<a[k,r-bin[k]+1] then writeln(a[k,l])
else writeln(a[k,r-bin[k]+1]);
{writeln(min(a[k,l],a[k,r-bin[k]+1])); }
end;
close(output);
end.