Pagini recente » Cod sursa (job #2354261) | Cod sursa (job #2945668) | Cod sursa (job #3280261) | Cod sursa (job #1108539) | Cod sursa (job #2286885)
#include <cstdio>
#define MAXN 500
#define INF 1000000000000000
using namespace std;
int d[1+MAXN+5];
long long p[1+MAXN+5][1+MAXN+5];
inline int minim( long long a, long long b )
{
if( a>b )
a=b;
return a;
}
int main()
{
freopen( "podm.in", "r", stdin );
freopen( "podm.out", "w", stdout );
int n;
scanf( "%d", &n );
for( int i=0;i<=n;i++ )
scanf( "%d", &d[i] );
for( int i=1;i<n;i++ )
p[i][i+1]=d[i-1]*d[i]*d[i+1];
for( int j=2;j<n;j++ )
for( int i=1;i<=n-j;i++ )
{
p[i][i+j]=INF;
for( int k=i;k<i+j;k++ )
p[i][i+j]=minim(p[i][i+j],p[i][k]+p[k+1][i+j]+1LL*d[i-1]*d[k]*d[i+j]);
}
printf( "%lld", p[1][n] );
return 0;
}