Pagini recente » Cod sursa (job #1904484) | Cod sursa (job #2543476) | Cod sursa (job #1745004) | Cod sursa (job #1208427) | Cod sursa (job #2233141)
// By Stefan Radu
#include <fstream>
#include <vector>
using namespace std;
typedef long long ll;
ifstream cin ("podm.in");
ofstream cout ("podm.out");
const ll INF = (1ull << 62) - 1;
int main () {
int n;
cin >> n;
vector < int > d (n + 1);
for (auto &x : d) {
cin >> x;
}
vector < vector < ll > > dp (n + 1, vector < ll > (n + 1));
for (int i = 2; i <= n; ++ i) {
dp[i - 1][i] = d[i - 2] * d[i - 1] * d[i];
}
for (int len = 2; len < n; ++ len) {
for (int i = 1; i + len <= n; ++ i) {
dp[i][i + len] = INF;
for (int mij = i; mij < i + len; ++ mij) {
dp[i][i + len] = min (dp[i][i + len], dp[i][mij] + dp[mij + 1][i + len] + 1ll * d[i - 1] * d[mij] * d[i + len]);
}
}
}
cout << dp[1][n] << '\n';
}