Pagini recente » Cod sursa (job #1803450) | Cod sursa (job #2702529) | Cod sursa (job #39891) | Cod sursa (job #2360422) | Cod sursa (job #690537)
Cod sursa(job #690537)
#include<iostream>
#include<fstream>
using namespace std;
const int MAXN = 505;
const long long INF = 1LL<<62;
int d[MAXN];
long long dp[MAXN][MAXN];
int main() {
ifstream f("podm.in");
ofstream g("podm.out");
int n;
f >> n;
for (int i = 1; i <= n+1; i++) {
f >> d[i];
}
//cout << INF << endl;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
dp[i][j] = INF;
}
}
for (int i = 1; i <= n; i++) {
dp[i][i] = 0;
dp[i][i+1] = (long long)d[i]*d[i+1]*d[i+2];
}
for (int j = 2; j <= n-1; j++) {
for (int i = 1; i <= n && i+j <= n; i++) {
for (int k = 0; k <= j-1; k++) {
dp[i][i+j] = min(dp[i][i+j], dp[i][i+k] + dp[i+k+1][i+j] + d[i]*d[i+k+1]*d[i+j+1]);
}
}
}
g << dp[1][n] << '\n';
return 0;
}