Pagini recente » Cod sursa (job #44169) | Cod sursa (job #60613) | Cod sursa (job #407198) | Cod sursa (job #1096134) | Cod sursa (job #3164585)
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int NMAX = 505;
inline void fast() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
}
int N;
struct Matrix {
ll x, y;
};
vector<Matrix> v;
void read() {
ifstream in("podm.in");
in >> N;
v.resize(N);
ll x;
in >> x;
for (int i = 0; i < N; i++) {
in >> v[i].y;
v[i].x = x;
x = v[i].y;
}
}
ll dp[NMAX][NMAX];
void solve() {
for (int k = 1; k < N; k++) {
for (int i = 0; i < N - k; i++) {
dp[i][i + k] = LLONG_MAX;
for (int j = i; j <= i + k - 1; j++) {
assert(v[j].y == v[j + 1].x);
ll cost = dp[i][j] + dp[j + 1][i + k] + v[i].x * v[j].y * v[i + k].y;
dp[i][i + k] = min(dp[i][i + k], cost);
}
}
}
ofstream out("podm.out");
out << dp[0][N - 1] << '\n';
}
int main() {
fast();
read();
solve();
return 0;
}