Pagini recente » Cod sursa (job #1212859) | Cod sursa (job #2178311) | Cod sursa (job #427057) | Cod sursa (job #1469187) | Cod sursa (job #2757295)
#include <cstdio>
#include <limits>
#include <vector>
#include <algorithm>
using namespace std;
int N;
vector<vector<long long>> DP;
vector<long long> v;
int main()
{
freopen("podm.in", "r", stdin);
freopen("podm.out", "w", stdout);
scanf("%d", &N);
v.resize(N + 1);
for (int i = 0; i <= N; ++i)
scanf("%lld", &v[i]);
DP.resize(N, vector<long long>(N, numeric_limits<long long>::max() / 4));
for (int i = 0; i < N; ++i)
DP[i][i] = 0;
for (int i = N - 2; i >= 0; --i)
for (int j = i + 1; j < N; ++j)
for (int k = i; k < j; ++k)
DP[i][j] = min(DP[i][j],
DP[i][k] + DP[k+1][j] + v[i] * v[k + 1] * v[j + 1]);
printf("%lld", DP[0][N-1]);
return 0;
}