这个利用倍增的思想
可以做到O(nlgn)的预处理以及O(1)的查询~
procedure yuchuli;
var x:longint;
begin
x:=trunc(ln(n)/ln(2))//常数优化 pow[i]表示2的i次 f[i,0]即a[i]
for i:=1 to x do
for j:=1 to n-pow[i]+1 do
f[i,j]:=max(f[i,j-1],f[i+pow[j-1],j-1]);
end;
function ask(a,b:longint):longint;
begin
m:=trunc(ln(b-a+1)/ln(2));
exit(max(f[a,m],f[b-pow[m]+1,m]));
end;