正解:DSF+DP=100分(只DP也可以)
var n,i,j,l,ans,tot:longint;
a:array[0..1000] of longint;
f:array[0..1000,0..1000] of longint;
function min(x,y:longint):longint;
begin
if x<y then
begin
if x<y then
begin
if x<y then
exit(x);
end;
end
else
exit(y);
end;
procedure fuzhi();
var i,j:longint;
begin
for i:=0 to 1000 do
begin
for j:=0 to 1000 do
begin
f[i,j]:=maxlongint div 3;
end;
end;
end;
procedure pd();
begin
if i+j<=n then f[j,i]:=min(f[j,i],f[j,i+j]+a[i]);
if i-j>0 then f[j,i]:=min(f[j,i],f[j-1,i-j]+a[i]);
end;
begin
readln(n);
for i:=1 to n do readln(a[i]);
fuzhi();
f[0,1]:=0;
ans:=maxlongint;
for j:=1 to n do
begin
for i:=n downto 1 do
begin
pd();
end;
ans:=min(ans,f[j,n]);
end;
writeln(ans);
end.