program jkl;
var
n,i,j,k,max:longint;
a,b:array[0..1000] of longint;
f:array[0..100,0..100] of longint;
begin
readln(n);
for i:=1 to n do
begin
read(a[i]);
a[i+n]:=a[i];
end;
for i:=1 to 2*n-1 do
b[i]:=a[i+1]; b[2*n]:=a[1];
for i:=1 to n do
f[i,2]:=a[i]*b[i]*b[i+1];
for j:=3 to n do
for i:=1 to n do
begin
for k:=2 to j-2 do
if f[i,j]<f[i,k]+f[i+k,j-k]+a[i]*a[i+k]*b[i+j-1]
then f[i,j]:=f[i,k]+f[i+k,j-k]+a[i]*a[i+k]*b[i+j-1];
if f[i,j]<f[i+1,j-1]+a[i]*b[i]*b[i+j-1]
then f[i,j]:=f[i+1,j-1]+a[i]*b[i]*b[i+j-1];
if f[i,j]<f[i,j-1]+a[i]*a[i+j-1]*b[i+j-1]
then f[i,j]:=f[i,j-1]+a[i]*a[i+j-1]*b[i+j-1];
end;
for i:=1 to n do
if f[i,n]>max
then max:=f[i,n];
writeln(max);
end.
var
n,i,j,t,k,max:longint;
d:array[1..400]of longint;
f:array[0..400,0..400]of longint;
begin
readln(n);
for i:=1 to n do read(d[i]);
for i:=n+1 to n*2 do d[i]:=d[i-n];
for t:=2 to n do
for i:=1 to 2*n-t+1 do
begin
j:=i+t;
for k:=i+1 to j-1 do
if f[i,j]<f[i,k]+f[k,j]+d[i]*d[j]*d[k] then
f[i,j]:=f[i,k]+f[k,j]+d[i]*d[j]*d[k];
end;
max:=0;
for i:=1 to n do
if f[i,i+n]>max then max:=f[i,i+n];
writeln(max);
end.
鏀规濡備笅
program jkl;
var
n,i,j,k,max:longint;
a,b:array[0..1000] of longint;
f:array[0..100,0..100] of longint;
function m(i:integer):integer;
begin
//if i>n then exit(i mod n)//////2n
//else exit(i);
while i>n do i:=i-n;
m:=i;
end;
begin
readln(n);
for i:=1 to n do
begin
read(a[i]);
a[i+n]:=a[i];
end;
for i:=1 to 2*n-1 do
b[i]:=a[i+1]; b[2*n]:=a[1];
for i:=1 to n do
f[i,2]:=a[i]*b[i]*b[i+1];
for j:=3 to n do
for i:=1 to n do
begin
for k:=2 to j-2 do
if f[i,j]<f[i,k]+f[m(i+k),j-k]+a[i]*a[i+k]*b[i+j-1]
then f[i,j]:=f[i,k]+f[m(i+k),j-k]+a[i]*a[i+k]*b[i+j-1];
if f[i,j]<f[m(i+1),j-1]+a[i]*b[i]*b[i+j-1]
then f[i,j]:=f[m(i+1),j-1]+a[i]*b[i]*b[i+j-1];
if f[i,j]<f[i,j-1]+a[i]*a[i+j-1]*b[i+j-1]
then f[i,j]:=f[i,j-1]+a[i]*a[i+j-1]*b[i+j-1];
end;
for i:=1 to n do
if f[i,n]>max
then max:=f[i,n];
writeln(max);
end.