Pagini recente » Cod sursa (job #2084926) | Cod sursa (job #820822) | Cod sursa (job #291536) | Cod sursa (job #2046677) | Cod sursa (job #2791158)
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
//#pragma GCC optimize("O3")
#define ll long long
#define ull unsigned long long
#define pii pair<int, int>
#define FASTIO cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(0);
#define FILES freopen("podm.in", "r", stdin); freopen("podm.out", "w", stdout);
using namespace std;
using namespace __gnu_pbds;
template<typename T>
using ordered_set = tree<T, null_type,less<T>, rb_tree_tag,tree_order_statistics_node_update>;
#define int ll
int m[505][505], v[505];
signed main() {
#ifndef ONLINE_JUDGE
FASTIO; FILES;
#endif // ONLINE_JUDGE
int n; cin >> n;
for(int i = 0; i <= n; i++)
cin >> v[i];
for(int i = 1; i <= n; i++) {
if(i != n)
m[i][i + 1] = v[i - 1] * v[i] * v[i + 1];
m[i][i] = 0;
}
for(int w = 2; w <= n - 1; w++)
for(int i = 1; i <= n - w; i++) {
int j = i + w;
m[i][j] = INT_MAX;
for(int k = i; k <= j - 1; k++)
m[i][j] = min(m[i][j], m[i][k] + m[k + 1][j] + v[i - 1] * v[k] * v[j]);
}
cout << m[1][n];
return 0;
}