Pagini recente » Cod sursa (job #2622589) | Cod sursa (job #1385554) | Cod sursa (job #275207) | Cod sursa (job #2336630) | Cod sursa (job #2233142)
// By Stefan Radu
#include <fstream>
#include <vector>
using namespace std;
typedef unsigned long long ull;
ifstream cin ("podm.in");
ofstream cout ("podm.out");
const ull INF = (1ull << 63) - 1;
int main () {
int n;
cin >> n;
vector < int > d (n + 1);
for (auto &x : d) {
cin >> x;
}
vector < vector < ull > > dp (n + 1, vector < ull > (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] + 1ull * d[i - 1] * d[mij] * d[i + len]);
}
}
}
cout << dp[1][n] << '\n';
}