Cod sursa(job #766278)

Utilizator iliya785iliya785 iliya785 Data 10 iulie 2012 20:33:20
Problema Range minimum query Scor 0
Compilator fpc Status done
Runda Arhiva educationala Marime 0.74 kb
const inf = 1000001;
var t,a:array[1..4000000] of longint;
    i,j,n,m,l,r,k:longint;
procedure build;
var i:longint; 
 begin
  for i:=n+1 to n shl 1 do t[i]:=a[i - n];
   for i:=n downto 1 do t[i]:=min(t[i shl 1],t[(i shl 1) + 1]);
 end;
function rmq(l,r:longint):longint;
var res:longint; 
 begin
  res:=inf; l:=l+n; r:=r+n;
   while (l<=r) do
    begin
     if l mod 2 <> 0 then res:=min(res,t[l]);
      if r mod 2 = 0 then res:=min(res,t[r]);
       l:=(l + 1) shr 1; r:=(r - 1) shr 1;
    end;
   rmq:=res;
 end;
Begin
Assign(input,'rmq.in');
reset(input);
Assign(output,'rmq.out');
rewrite(output);
read(n,k);
for i:=1 to n do read(a[i]);
build;
for i:=1 to k do
 begin
  read(l,r);
  writeln(rmq(l,r));
 end;
end.