Cod sursa(job #263841)

Utilizator batracorina dijmarescu batra Data 20 februarie 2009 21:03:29
Problema Range minimum query Scor 0
Compilator fpc Status done
Runda Arhiva educationala Marime 0.65 kb
const nmax=100000;
var f,g:text;
rmq:array[0..17,1..nmax] of longint;
lg,v:array[1..nmax]of longint;
k,i,n,j,m,a,b:longint;
function min(a,b:longint):longint;
begin
if a<b then min:=a
   else min:=b;
end;
begin
assign(f,'rmq.in');

reset(f);
assign(g,'rmq.out');
rewrite(g);
readln(f,n,m);
read(f,v[i]);
rmq[0,1]:=v[1];
for i:=2 to n do
   begin
   read(f,v[i]);
   rmq[0,i]:=v[i];
   lg[i]:=lg[i]+1;
   end;
for i:=1 to lg[n] do
  for j:=1 to n-i+1 do
    rmq[i,j]:=min(rmq[i-1,j],rmq[i-1,j+i-1]);
while m>0 do
   begin
   readln(f,i,j);
   k:=lg[j-i+1];
   writeln(g,min(rmq[k,i],rmq[k,j-k+1]));
   end;




close(g);
end.