Pagini recente » Cod sursa (job #1997932) | Cod sursa (job #2083122) | Cod sursa (job #2065535) | Cod sursa (job #888534) | Cod sursa (job #1418334)
var n,m,i,j,k,x,y:longint;
a,b:array[1..100000] of longint;
procedure bmin;
var i,j,r:longint;
begin
j:=0;
i:=0;
while i<n do begin
inc(j);
inc(i);
r:=i;
b[j]:=i;
for i:=r to r+k-1 do begin
if a[j]>a[i] then b[j]:=i;
if i=n then break;
end;
end;
// for i:=1 to j do write(a[b[i]],' ');
// writeln;
end;
procedure rmq(x,y:longint);
var i,j,m,x1,y1,m1,m2:longint;
begin
x1:=((x-1) div k) + 1;
if (x mod k <> 1) then
inc(x1);
y1:=(y-1) div k;
if (y mod k = 0) then
inc(y1);
// calculam minimul din intervalele intregi de lungime k
m:=a[b[x1]];
// writeln(x1,' ',y1);
for i:=x1+1 to y1 do begin
if m>a[b[i]] then m:=a[b[i]];
end;
for i:=x to (x1-1)*k do
if m>a[i] then m:=a[i];
for i:=y downto y1*k+1 do
if m>a[i] then m:=a[i];
writeln(m);
end;
begin
assign(input,'rmq.in');
assign(output,'rmq.out');
reset(input);
rewrite(output);
read(n,m);
k:=trunc(sqrt(n));
for i:=1 to n do read(a[i]);
bmin;
for i:=1 to m do begin
read(x,y);
rmq(x,y);
end;
end.