Pagini recente » Cod sursa (job #2507580) | Cod sursa (job #72436) | Cod sursa (job #2648619) | Cod sursa (job #2835299) | Cod sursa (job #1546938)
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
typedef long long ll;
const int MN = 502;
int N;
int D[MN];
ll dp[MN][MN];
int main()
{
freopen("podm.in","r",stdin);
freopen("podm.out","w",stdout);
scanf("%d",&N);
for (int i = 0;i <= N;i++)
scanf("%d",&D[i]);
for (int i = 1;i <= N;i++)
dp[i][i] = 0;
for (int i = 1;i < N;i++)
dp[i][i + 1] = 1LL * D[i - 1] * D[i] * D[i + 1];
for (int k = 2;k < N;k++)
for (int i = 1;i <= N - k;i++)
{
dp[i][i + k] = 0;
for (int j = i;j <= i + k;j++)
{
ll aux = dp[i][j] + dp[j + 1][i + k] + 1LL * D[i - 1] * D[j] * D[i + k];
if (!dp[i][i + k] || dp[i][i + k] > aux)
dp[i][i + k] = aux;
}
}
printf("%lld\n",dp[1][N]);
return 0;
}