Pagini recente » Cod sursa (job #1436416) | Cod sursa (job #1101073) | Cod sursa (job #985120) | Cod sursa (job #983290) | Cod sursa (job #2741896)
#include <fstream>
#include <iostream>
using namespace std;
int n;
long long dp[502][502], d[502];
const long long Inf = 1e17;
void read() {
int i;
ifstream f("podm.in");
f >> n;
for (i = 0; i <= n; i++)
f >> d[i];
f.close();
}
void solve() {
int i, j, k, lin, col;
for (i = 1; i <= n; i++)
for (j = 1; j <= n; j++)
dp[i][j] = Inf;
for (i = 1; i <= n; i++)
dp[i][i] = 0;
for (i = 2; i <= n; i++)
for (j = 1; j <= n - i + 1; j++) {
lin = j; col = i + j - 1;
for (k = lin; k < col; k++)
dp[lin][col] = min(dp[lin][col], dp[lin][k] + dp[k + 1][col] + 1LL * d[lin - 1] * d[k] * d[col]);
}
}
void output() {
ofstream g("podm.out");
g << dp[1][n];
g.close();
}
int main() {
read();
solve();
output();
return 0;
}