Pagini recente » Cod sursa (job #3283673) | Cod sursa (job #994882) | Cod sursa (job #2293608) | Cod sursa (job #1611210) | Cod sursa (job #202323)
Cod sursa(job #202323)
program range_minimum_query;
var a:array[1..100010] of longint;
p:array[0..18,1..100010] of longint;
l:array[1..100010] of word;
n,m:longint;
procedure createtable;
var i,j,x:longint;
begin
for i:=1 to n do p[0,i]:=a[i];
x:=1;
for j:=1 to l[n] do begin
for i:=1 to n+1-(x shl 1) do begin
if p[j-1,i]<p[j-1,i+x]
then p[j,i]:=p[j-1,i]
else p[j,i]:=p[j-1,i+x];
end;
x:=x shl 1;
end;
end;
procedure main;
var f,g:text;
i,j,u,v:longint;
x:byte;
begin
assign(f,'rmq.in'); reset(f);
assign(g,'rmq.out'); rewrite(g);
readln(f,n,m);
for i:=1 to n do readln(f,a[i]);
l[1]:=0;
for i:=2 to n do l[i]:=l[i shr 1]+1;
createtable;
for i:=1 to m do begin
readln(f,u,v);
x:=l[v-u+1];
if p[x,u]<p[x,v+1-(1 shl x)] then writeln(g,p[x,u])
else writeln(g,p[x,v+1-(1 shl x)]);
end;
close(f); close(g);
end;
BEGIN
main;
END.