Pagini recente » Cod sursa (job #329283) | Cod sursa (job #2290321) | Cod sursa (job #1227781) | Cod sursa (job #1404623) | Cod sursa (job #309014)
Cod sursa(job #309014)
Program Rmq;
const maxn=100001;
maxlog=17;
u : longint=1;
var Intrare,Iesire : text;
a : array[1..maxn] of longint;
mk : array[0..maxlog,1..maxn] of longint;
n,m,i,x,y : longint;
j,k : byte;
buf : array[1..65000] of byte;
begin
assign(Intrare,'rmq.in');
assign(Iesire,'rmq.out');
reset(Intrare);
rewrite(Iesire);
settextbuf(Intrare,buf);
readln(Intrare,n,m);
for i:=1 to n do begin
readln(Intrare,a[i]);
mk[0,i]:=a[i];
end;
j:=1;
while (u shl j)<=n do begin
i:=1;
while i+(u shl j)-1<=n do begin
if mk[j-1,i]<mk[j-1,i+(u shl (j-1))] then mk[j,i]:=mk[j-1,i]
else mk[j,i]:=mk[j-1,i+(u shl (j-1))];
i:=i+1;
end;
j:=j+1;
end;
for i:=1 to m do begin
readln(Intrare,x,y);
k:=0;
while (u shl (k+1))<=(y-x+1) do k:=k+1;
if mk[k,x]<mk[k][y-(u shl k)+1] then writeln(Iesire,mk[k,x])
else writeln(Iesire,mk[k][y-(u shl k)+1]);
end;
close(Intrare);
close(Iesire);
end.