Pagini recente » Cod sursa (job #1831167) | Cod sursa (job #631300) | Cod sursa (job #2358504) | Cod sursa (job #2967102) | Cod sursa (job #408492)
Cod sursa(job #408492)
{DINH QUANG DAT TIN 07-10}
{RMQ}
CONST
TFI='rmq.in';
TFO='rmq.out';
MAX=1000001;
TYPE
arr1int=array[0..MAX] of longint;
VAR
fi,fo:text;
n,q:longint;
f:array[0..MAX,0..20] of longint;
a:arr1int;
PROCEDURE input;
var
i:longint;
begin
read(fi,n,q);
for i:= 1 to n do read(fi,a[i]);
end;
FUNCTION smin(x,y:longint):longint;
begin
if x>y then exit(y);
exit(x);
end;
PROCEDURE init;
var
i,j,l,k:longint;
begin
for i:= 1 to n do f[i][0]:=a[i];
k:=trunc(ln(n)/ln(2))+1;
for j:= 1 to k do
begin
l:=1 shl j;
for i:= 1 to n do
if i+l-1<=n then
begin
f[i][j]:=smin(f[i][j-1],f[i+1 shl (j-1)][j-1]);
end else break;
end;
end;
FUNCTION find(u,v:longint):longint;
var
l:longint;
begin
l:=trunc(ln(v-u+1)/ln(2));
find:=smin(f[u][l],f[v-1 shl l +1][l]);
end;
PROCEDURE process;
var
res,x,y,i:longint;
begin
for i:= 1 to q do
begin
read(fi,x,y);
res:=find(x,y);
writeln(fo,res);
end;
end;
BEGIN
assign(fi,tfi);reset(fi);
assign(fo,tfo);rewrite(fo);
input;
init;
process;
close(fo);
close(fi);
END.