Pagini recente » Cod sursa (job #606800) | Cod sursa (job #457230) | Cod sursa (job #1955210) | Cod sursa (job #1316289) | Cod sursa (job #586955)
Cod sursa(job #586955)
var a,b:array[1..100000]of longint;
n,m,i,j,min,x,y,r,k,t:longint;
f,g:text;
function max(a,b:longint):longint;
begin
max:=a;
if b>min then max:=b;
end;
function minim(a,b:longint):longint;
begin
minim:=a;
if b<minim then min:=b;
end;
begin
assign(f,'rmq.in');
assign(g,'rmq.out');
reset(f);
rewrite(g);
readln(f,n,m);
for i:=1 to n do
readln(f,a[i]);
r:=trunc(sqrt(n));
for i:=n+1 to (r+1)*(r+1) do
a[i]:=a[n];
n:=(r+1)*(r+1);
inc(r);
for i:=1 to r do
begin
b[i]:=a[(i-1)*r+1];
for j:=(i-1)*r+1 to i*r do
if a[j]<b[i] then b[i]:=a[j];
end;
for i:=1 to r do
writeln(b[i]);
readln;
for i:=1 to m do
begin
readln(f,x,y);
min:=a[x];
j:=(x div r)+1;
while (j-1)*r<x do inc(j);
k:=j-1;
while j*r<y do
begin
if b[j]<min then min:=b[j];
inc(j);
end;
for t:=x to minim(y,k*r) do
if a[t]<min then min:=a[t];
for t:=max(x,(j-1)*r) to y do
if a[t]<min then min:=a[t];
writeln(g,min);
end;
close(g);
end.