Pagini recente » Cod sursa (job #2326715) | Cod sursa (job #1010655) | Cod sursa (job #2204316) | Cod sursa (job #2660799) | Cod sursa (job #2689835)
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define fi first
#define se second
#define MOD 1000000007
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef pair<int, int> ii;
typedef vector<ii> vii;
typedef long long ll;
typedef vector<ll> vll;
typedef vector<vll> vvll;
typedef double ld;
ifstream fin("podm.in");
ofstream fout("podm.out");
int n;
unsigned long long dp[505][505];
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
fin >> n;
vector<int> d(n + 1);
for (auto &val : d) {
fin >> val;
}
for (int i = 0; i <= n; i++) {
for (int j = 0; j <= n; j++) {
dp[i][j] = ULLONG_MAX;
}
}
for (int i = 1; i <= n; i++) {
dp[i][i] = 0;
if (i < n) {
dp[i][i + 1] = 1ULL * d[i - 1] * d[i] * d[i + 1];
}
}
for (int len = 2; len <= n; len++) {
for (int i = 1; i <= n - len + 1; i++) {
int j = i + len - 1;
for (int k = i; k < j; k++) {
unsigned long long new_sol = dp[i][k] + dp[k + 1][j] + 1ULL * d[i - 1] * d[k] * d[j];
dp[i][j] = min(dp[i][j], new_sol);
}
}
}
fout << dp[1][n];
fin.close();
fout.close();
return 0;
}