Pagini recente » Cod sursa (job #1814374) | Cod sursa (job #502654) | Cod sursa (job #1980589) | Cod sursa (job #666061) | Cod sursa (job #1869090)
#include <fstream>
#include <vector>
using namespace std;
typedef long long int64;
const int64 kInfinite = (1LL << 50);
int main()
{
ifstream fin("podm.in");
ofstream fout("podm.out");
int n;
fin >> n;
vector<pair<int, int>> dim(n);
fin >> dim[0].first >> dim[0].second;
for (int i = 1; i < n; ++i) {
dim[i].first = dim[i - 1].second;
fin >> dim[i].second;
}
vector<vector<int64>> d(n, vector<int64>(n, kInfinite));
for (int i = 0; i < n; ++i) {
d[i][i] = 0;
}
for (int len = 2; len <= n; ++len) {
for (int i = 0; i <= n - len; ++i) {
int lim = i + len - 1;
for (int j = i; j < lim; ++j) {
d[i][lim] = min(d[i][lim], d[i][j] + d[j + 1][lim] +
dim[i].first * dim[j].second * dim[lim].second);
}
}
}
fout << d[0].back() << "\n";
return 0;
}