Pagini recente » Cod sursa (job #1338722) | Cod sursa (job #781836) | Cod sursa (job #2604212) | Cod sursa (job #1147710) | Cod sursa (job #2547797)
#include <iostream>
#include <fstream>
using namespace std;
const int NMAX = 500;
const long long INF = ( ( 1LL << 62 ) - 1 ) * 2 + 1;
long long dp[NMAX + 1][NMAX + 1];
long long v[NMAX + 1];
int main() {
ifstream fin( "podm.in" );
ofstream fout( "podm.out" );
int n, i, l, c;
fin >> n;
n ++;
for ( i = 1; i <= n; i ++ )
fin >> v[i];
for ( l = 3; l <= n; l ++ ) {
for ( c = 1; c <= n - l + 1; c ++ ) {
dp[c][l + c - 1] = INF;
for ( i = c + 1; i < l + c - 1; i ++ )
dp[c][l + c - 1] = min( dp[c][l + c - 1], dp[c][i] + dp[i][l + c - 1] + v[c] * v[i] * v[c + l - 1] );
}
}
fout << dp[1][n];
return 0;
}