Pagini recente » Cod sursa (job #1015435) | Cod sursa (job #2393221) | Cod sursa (job #1028647) | Cod sursa (job #1283556) | Cod sursa (job #3346381)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
int main(void)
{
std::ios::sync_with_stdio(false);
ifstream in("podm.in");
ofstream out("podm.out");
vector<vector<int>> m(505, vector<int>(3, 0));
vector<vector<long>> dp(505, vector<long>(505, 0));
int n;
in >> n >> m[1][0];
for (int i = 1; i <= n; ++i) {
in >> m[i][1];
m[i + 1][0] = m[i][1];
}
// for (int i = 1; i <= n; i++) {
// cout << m[i][0] << " " << m[i][1]<< endl;
// }
for (int j = 1; j <= n; ++j) {
for (int k = 1; k < n; ++k) {
for (int i = 1; i <= n - k; ++i) {
if (i < j) {
long a = dp[i][j - 1] + m[i][0] * m[j - 1][1] * m[j][1];
long b = dp[i + 1][j] + m[i + 1][0] * m[j][1] * m[i][0];
dp[i][j] = min(a, b);
}
}
}
}
// for (int i = 0; i <= n; i++) {
// for (int j = 0; j <= n; j++) {
// cout << dp[i][j] << " ";
// }
// cout << endl;
// }
out << dp[1][n];
in.close();
out.close();
return 0;
}