Pagini recente » Cod sursa (job #2634074) | Cod sursa (job #782037) | Cod sursa (job #2184388) | Cod sursa (job #1293215) | Cod sursa (job #914078)
Cod sursa(job #914078)
#include <cstdio>
#define nMax 550
#define min(a, b) ((a < b) ? a : b)
using namespace std;
int n;
long long d[nMax];
long long m[nMax][nMax];
void citire(){
scanf("%d", &n);
for(int i = 0; i <= n; ++ i){
scanf("%lld", &d[i]);
}
}
void rez(){
for(int i = 1; i < n; ++i)
m[i][i + 1] = d[i - 1] * d[i] * d[i + 1];
for(int p = 2; p < n; ++ p){
for(int i = 1; i <= n - p; ++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();
rez();
return 0;
}