Cod sursa(job #687130)

Utilizator promix2012petruta andrei promix2012 Data 22 februarie 2012 09:28:20
Problema Range minimum query Scor 0
Compilator fpc Status done
Runda Arhiva educationala Marime 0.7 kb
program rmq;
uses math;
const fi='rmq.in';
      fo='rmq.out';
var v:array[1..100000] of integer;
r:array[0..20,1..100000] of integer;
bufin,bufout:array[1..65000] of char;
n,m,i,x,y,j,h,aux:longint;
var f,g:text;
begin
assign(f,fi);
reset(f);
assign(g,fo);
rewrite(g);
settextbuf(f,bufin);
settextbuf(g,bufout);
read(f,n,m);
for i:=1 to n do
begin
  readln(f,v[i]);
  r[0,i]:=v[i];
end;
for i:=1 to trunc(log2(n)) do
   for j:=1 to (n-(1 shr (i))+1) do
      r[i,j]:=min(r[i-1,j],r[i-1,j+1 shr (i-1)]);
for i:=1 to m do
   begin
   read(f,x,y);
   h:=trunc(log2(y-x+1));
   aux:=y-x+1-(1 shl h);
   writeln(g,min(r[h,x],r[h,x+aux]));
   end;

 close(f);
 close(g);
 end.