Pagini recente » Cod sursa (job #2246548) | Cod sursa (job #3260355) | Cod sursa (job #2794005) | Cod sursa (job #947590) | Cod sursa (job #795418)
Cod sursa(job #795418)
#include <cstdio>
#define min(a, b) ((a < b) ? a : b)
using namespace std;
int n;
int d[510];
long long m[510][510];
void citire(){
scanf ("%d", &n);
for (int i = 0; i <= n; ++ i){
scanf ("%d", &d[i]);
}
}
void dinamica(){
for (int p = 1; p <= n; ++ p){
for (int i = 1; i <= n; ++i)
{
int j = p + i;
m[i][j] = m[i][i] + m[i + 1][j] + d[i - 1] * d[i] * d[j];
for (int k = i + 1; k <= j; ++k){
m[i][j] = min(m[i][j], m[i][k] + m[k + 1][j] + d[i - 1] * d[k] * d[j]);
}
}
}
printf ("%lld\n", m[1][n]);
}
int main()
{
freopen ("podm.in", "r", stdin);
freopen ("podm.out", "w", stdout);
citire();
dinamica();
return 0;
}