Pagini recente » Cod sursa (job #1662098) | Cod sursa (job #2733110) | Cod sursa (job #1487949) | Cod sursa (job #120867) | Cod sursa (job #244041)
Cod sursa(job #244041)
var arb:array[1..300001] of longint;
i,a,b,min,v,poz,n,m:longint;
function mini(a,b:longint):longint;
begin
if a<b then mini:=a
else mini:=b;
end;
procedure refresh(nod,st,dr:longint);
var mij:longint;
begin
if st=dr then arb[nod]:=v
else
begin
mij:=(st+dr) div 2;
if poz<=mij then refresh(2*nod,st,mij)
else refresh(2*nod+1,mij+1,dr);
arb[nod]:=mini(arb[2*nod],arb[2*nod+1]);
end;
end;
procedure ask(nod,st,dr:longint);
var mij:longint;
begin
if (a<=st)and(b>=dr) then
begin
if arb[nod]<min then min:=arb[nod];
end
else
begin
mij:=(st+dr) div 2;
if a<=mij then ask(2*nod,st,mij);
if b>mij then ask(2*nod+1,mij+1,dr);
end;
end;
begin
assign(input,'rmq.in'); reset(input);
assign(output,'rmq.out'); rewrite(output);
readln(n,m);
for i:=1 to n do
begin
readln(v); poz:=i;
refresh(1,1,n);
end;
for i:=1 to m do
begin
min:=100001;
readln(a,b);
ask(1,1,n);
writeln(min);
end;
close(input);
close(output);
end.