Pagini recente » Cod sursa (job #368338) | Cod sursa (job #3180380) | Cod sursa (job #2051394) | Cod sursa (job #2905754) | Cod sursa (job #1414074)
#include <iostream>
#include <cstdio>
#include <climits>
#define n_max 505
using namespace std;
long long mat[n_max][n_max] ;
long long d[n_max] , n ;
void citire() ;
void compl_mat() ;
int main()
{
freopen( "podm.in" , "r" , stdin ) ;
freopen( "podm.out" , "w" , stdout ) ;
citire() ;
compl_mat() ;
printf( "%lld\n" , mat[1][n] ) ;
return 0;
}
void citire()
{
scanf( "%lld" , &n ) ;
for ( int i = 0 ; i <= n ; i ++ )
scanf( "%lld" , &d[i] ) ;
}
void compl_mat()
{
for ( int q = 2 ; q <= n ; q ++ )
{
int i = 1 , j = q ;
while ( j <= n && i < n )
{
long long min = (1LL<<62) ;
for ( int k = i ; k < j ; k ++ )
if ( min > ( mat[i][k] + mat[k+1][j] + ( d[i-1]*d[k]*d[j] ) ) )
min = mat[i][k] + mat[k+1][j] + ( d[i-1]*d[k]*d[j] ) ;
mat[i][j] = min ;
i ++ ;
j ++ ;
}
}
}