Cod sursa(job #690083)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in ("podm.in");
ofstream out("podm.out");
long long const N=505;
long long const INF=1<<30;
long long d[N],opr[N][N];
long long n;
void citesc ()
{
in>>n;
for(long long i=1;i<=n+1;i++)
in>>d[i];
in.close();
}
long long minim (long long a, long long b)
{
if(a<b)
return a;
return b;
}
void construiesc ()
{
for(long long i=n-1;i>0;i--)
for(long long j=i+1;j<=n;j++)
{
opr[i][j]=INF;
for(long long k=i;k<j;k++)
opr[i][j]=minim(opr[i][j],opr[i][k]+opr[k+1][j]+d[i]*d[k+1]*d[j+1]);
}
}
/*void afis()
{
for(long long i=1;i<=n;i++)
{
for(long long j=1;j<=n;j++)
cout<<opr[i][j]<<"\t";
cout<<"\n";
}
}*/
int main()
{
citesc ();
construiesc ();
//afis();
out<<opr[1][n]<<"\n";
return 0;
}