Pagini recente » Monitorul de evaluare | Cod sursa (job #706081) | Cod sursa (job #1520475) | Cod sursa (job #2506647) | Cod sursa (job #1535364)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream cin("podm.in");
ofstream cout("podm.out");
#define MAXN 510
#define INF 1000000000000000LL
long long dst[MAXN],dp[MAXN][MAXN];
int n;
long long mn_dp(int i, int j)// le dinamique
{
if(i==j)
return 0;
if(dp[i][j])
return dp[i][j];
dp[i][j]=INF;
for(int k=i; k<j; k++)
dp[i][j]=min(dp[i][j], mn_dp(i,k) + mn_dp(k+1,j) + dst[i-1]*dst[k]*dst[j]);
return dp[i][j];
}
int main()
{
cin>>n;
for(int i=0; i<=n; i++)
cin>>dst[i];
cout<<mn_dp(1,n);
}