Pagini recente » Cod sursa (job #3172301) | Cod sursa (job #2808000) | Cod sursa (job #2847230) | Cod sursa (job #378774) | Cod sursa (job #372710)
Cod sursa(job #372710)
var i,j,n,m,l,r:longint;
p:array[0..100000,0..18] of longint; {17}
log:array[1..100000] of byte;
bufin:array[1..100000] of byte;
inpu,outpu:text;
begin
assign(inpu,'rmq.in');
reset(inpu);
settextbuf(inpu,bufin);
assign(outpu,'rmq.out');
rewrite(outpu);
readln(inpu,n,m);
for i:=1 to n do readln(inpu,p[i,0]);
for i:=2 to n do
log[i]:=log[i shr 1]+1;
for j:=1 to log[n] do
for i:=1 to n-(1 shl j)+1 do begin
if p[i,j-1]<p[i+(1 shl (j-1)),j-1] then
p[i,j]:=p[i,j-1]
else
p[i,j]:=p[i+(1 shl (j-1)),j-1];
end;
for i:=1 to m do begin
readln(inpu,l,r);
if p[l,log[r-l+1]]<p[r-(1 shl log[r-l+1])+1,log[r-l+1]] then
writeln(outpu,p[l,log[r-l+1]])
else writeln(outpu,p[r-(1 shl log[r-l+1])+1,log[r-l+1]]);
end;
close(inpu);
close(outpu);
end.