Pagini recente » Cod sursa (job #1307970) | Cod sursa (job #2433780) | Cod sursa (job #240856) | Cod sursa (job #473587) | Cod sursa (job #202310)
Cod sursa(job #202310)
program range_minimum_query;
var a:array[1..100010] of longint;
p:array[1..100010,0..20] of longint;
n,m:longint;
procedure createtable;
var i,j:longint;
begin
for i:=1 to n do p[i,0]:=a[i];
j:=1;
while (1 shl j)<=n do begin
for i:=1 to n+1-(1 shl j) do begin
if p[i,j-1]<p[i+(1 shl (j-1)),j-1]
then p[i,j]:=p[i,j-1]
else p[i,j]:=p[i+(1 shl (j-1)),j-1];
end;
inc(j);
end;
end;
procedure main;
var f,g:text;
i,j,u,v,log:longint;
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]);
createtable;
for i:=1 to m do begin
readln(f,u,v);
if u=v then begin writeln(g,a[u]); continue; end;
log:=trunc(ln(v-u+1)/ln(2));
if p[u,log]<p[v+1-(1 shl log),log] then writeln(g,p[u,log])
else writeln(g,p[v+1-(1 shl log),log]);
end;
close(f); close(g);
end;
BEGIN
main;
END.