Pagini recente » Cod sursa (job #1334817) | Cod sursa (job #1258928) | Cod sursa (job #823117) | Cod sursa (job #2577558) | Cod sursa (job #2839356)
#include <bits/stdc++.h>
using namespace std;
int main() {
ifstream cin("podm.in");
ofstream cout("podm.out");
int n;
cin >> n;
vector<int64_t> a(n + 1);
for(int i = 0; i <= n; i++)
cin >> a[i];
// dp[i][j] = numarul minim de inmultiri din secventa [i, j]
vector dp(n + 1, vector<int64_t>(n + 1));
for(int len = 2; len <= n; len++)
for(int i = 1, j = len; j <= n; i++, j++) {
dp[i][j] = 1e18;
for(int k = i; k < j; k++) // Despartim secventa [i, j] in secventele [i, k] si [k, j] + costul inmutirii lor
dp[i][j] = min(dp[i][j], dp[i][k] + dp[k+1][j] + a[i-1] * a[k] * a[j]);
}
cout << dp[1][n] << "\n";
return 0;
}