Pagini recente » Cod sursa (job #1371758) | Cod sursa (job #2105392) | Cod sursa (job #657134) | Cod sursa (job #52540) | Cod sursa (job #2005363)
#include <fstream>
#define MAXN 505
#define LL long long
using namespace std;
ifstream fi("podm.in");
ofstream fo("podm.out");
LL dp[MAXN][MAXN],x[MAXN];
int n;
int main()
{
fi>>n;
for (int i=0; i<=n; i++)
fi>>x[i];
///completam pe diagonala
///d=0 => dp[i][i]=0
///d=1
for (int i=1; i<n; i++)
dp[i][i+1]=x[i-1]*x[i]*x[i+1];
for (int d=2; d<n; d++)
for (int i=1; i+d<=n; i++)
{
dp[i][i+d]=dp[i][i]+dp[i+1][i+d]
+x[i-1]*x[i]*x[i+d];
for (int k=i+1; k<i+d; k++)
dp[i][i+d]=min(dp[i][i+d],
dp[i][k]+dp[k+1][i+d]+x[i-1]*
x[k]*x[i+d]);
}
fo<<dp[1][n];
fi.close();
fo.close();
return 0;
}