Pagini recente » Cod sursa (job #2347302) | Cod sursa (job #509141) | Cod sursa (job #1656454) | Cod sursa (job #2452860) | Cod sursa (job #179390)
Cod sursa(job #179390)
program rmq;
var A : array [1..100000] of longint;
B : array [1..300000] of longint;
i,n,m,p1,p2,mn : longint;
f,g : text;
function min(a,b:longint):longint;
begin
if a>b then min := b
else min := a;
end;
procedure build(nod,l,r:longint);
var mij : longint;
begin
if l=r then B[nod] := A[l]
else begin
mij := (l+r) div 2;
build(2*nod,l,mij);
build(2*nod+1,mij+1,r);
B[nod] := min(B[2*nod],B[2*nod+1]);
end;
end;
procedure query(nod,l,r:longint);
var mij : longint;
begin
if (p1<=l) and (r<=p2) then mn := min(mn,B[nod])
else begin
mij := (l+r) div 2;
if p1<=mij then query(2*nod,l,mij);
if mij<p2 then query(2*nod+1,mij+1,r);
end;
end;
begin
assign(f,'rmq.in');
reset(f);
assign(g,'rmq.out');
rewrite(g);
readln(f,n,m);
for i := 1 to n do
readln(f,A[i]);
build(1,1,n);
for i := 1 to m do begin
mn := 100000;
readln(f,p1,p2);
query(1,1,n);
writeln(g,mn);
end;
close(f);
close(g);
end.