Cod sursa(job #613339)
#include <cstdio>
#include <algorithm>
#define N 505
#define inf 1000000000000
using namespace std;
int n;
long long s[N][N], a[N];
void citire()
{
scanf ("%d ", &n);
for (int i = 0; i <= n; ++ i)
scanf ("%lld ", &a[i]);
}
void matrici()
{
for (int i = 1; i < n; ++ i)
s[i][i + 1] = a[i - 1] * a[i] * a[i + 1];
for (int l = 2; l < n; ++ l)
for (int i = 1; i <= n - l; ++ i)
{
int j = l + i;
s[i][j] = inf;
for (int k = i; k <= j - 1; ++ k)
s[i][j] = min (s[i][j], s[i][k] + s[k + 1][j] + a[i - 1] * a[k] * a[j]);
}
printf ("%lld\n", s[1][n]);
}
int main()
{
freopen ("podm.in", "r", stdin);
freopen ("podm.out", "w", stdout);
citire();
matrici();
return 0;
}