Cod sursa(job #1505063)

Utilizator ili226Vlad Ilie ili226 Data 18 octombrie 2015 18:22:52
Problema Range minimum query Scor 20
Compilator fpc Status done
Runda Arhiva educationala Marime 0.81 kb
{$R-}
var f,fo:text;
    a:array[1..10000{0}]of longint;
    x,y,m,n,i:longint;
    rmq:array[0..10000{0},0..10000{0}]of longint;
function min(st,dr:longint):longint;
var m1,m2,mij:longint;
begin
if rmq[st,dr]<>0 then min:=rmq[st,dr]
                 else
 if st<=dr then
  if st=dr then begin min:=a[st];rmq[st,dr]:=a[st] end
	   else
   begin
    mij:=st+(dr-st)div 2;
    m1:=min(st,mij);
    m2:=min(mij+1,dr);
    if m1<m2 then
     begin
      min:=m1;
      rmq[st,dr]:=m1
     end
	     else
     begin
      min:=m2;
      rmq[st,dr]:=m2
     end
   end;
end;
begin
assign(f,'rmq.in');
assign(fo,'rmq.out');
reset(f);
readln(f,n,m);
for i:=1 to n do
 readln(f,a[i]);
rewrite(fo);
for i:=1 to m do
 begin
  readln(f,x,y);
  writeln(fo,min(x,y));
 end;
close(fo);
close(f);
end.