Cod sursa(job #263869)

Utilizator batracorina dijmarescu batra Data 20 februarie 2009 21:36:13
Problema Range minimum query Scor 0
Compilator fpc Status done
Runda Arhiva educationala Marime 0.7 kb
const nmax=1000000;
var f,g:text;
a:array[0..18,1..nmax] of longint;
lg,v:array[1..nmax]of longint;
x,y,h,l,r,lung,k,i,n,j,m,b:longint;
function min(a,b:longint):longint;
begin
if a<b then min:=a
   else min:=b;
end;
begin
assign(f,'query.in');

reset(f);
assign(g,'rmq.out');
rewrite(g);
readln(f,n,m);
for i:=1 to n do
   read(f,a[0,i]);
for i:=2 to n do
    lg[i]:=lg[i div 2]+1;
h:=1;
for i:=1 to lg[n] do
      begin
      h:=h*2;
      for j:=1 to n-h+1 do
         a[i,j]:=min(a[i-1,j],a[i-1,j+(h div 2)]);
      end;

for i:=1 to m do
begin
 readln(f,x,y);
  l:=y-x+1;
  r:=lg[l];
  lung:=1 shl r;
  writeln(g,min(a[r,x],a[r,y-lung+1]))

   end;



close(g);

end.