Pagini recente » Cod sursa (job #43831) | Cod sursa (job #2643584) | Istoria paginii monthly-2012/runda-10/clasament | Cod sursa (job #2954941) | Cod sursa (job #1168430)
program rmq_sqrt_n;
const nmax=100000;
inf=1 shl 30;
var a:array[1..nmax] of longint;
n,i,t,j,x,y,l,p,size,min:longint;
m:array[1..400] of longint;
function min1(a,b:longint):longint;
begin
if a>b then exit(b);
exit(a);
end;
begin
assign(input,'rmq.in');
assign(output,'rmq.out');
reset(input);
rewrite(output);
readln(n,t);
l:=trunc(sqrt(n)) ;
for i:=1 to n do readln(a[i]);
i:=1;
while i<=n do
begin
p:=inf;
for j:=1 to min1(l,n-i+1) do
if p>a[i+j-1] then
p:=a[i+j-1];
inc(size);
m[size]:=p;
i:=i+l;
end;
while t>0 do
begin
readln(x,y);
p:=l;
while x>p do p:=p+l;
min:=inf;
for i:=x to p do
if min>a[i] then min:=a[i];
j:=p div l+1;
while p+l < y do
begin
if m[j]<min then min:=m[j];
inc(j);
inc(p,l);
end;
for i:=p to y do
if a[i]<min then min:=a[i];
writeln(min);
dec(t);
end;
{ for i:=1 to size do write(m[i],' '); }
close(output);
end.