Pagini recente » Cod sursa (job #202317) | Atasamentele paginii iiot_simulare | Profil DRAGOSH | Monitorul de evaluare | Cod sursa (job #202324)
Cod sursa(job #202324)
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;
function min(x,y:longint):longint;
begin if x<y then min:=x else min:=y; end;
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
p[j,i]:=min(p[j-1,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];
writeln(g,min(p[x,u],p[x,v+1-(1 shl x)]));
end;
close(f); close(g);
end;
BEGIN
main;
END.