Pagini recente » Cod sursa (job #1475717) | Cod sursa (job #733770) | Cod sursa (job #2165063) | Cod sursa (job #1730509) | Cod sursa (job #1466747)
#include <stdio.h>
#define MAX 505
int n, i, j, k;
long long d[MAX], m[MAX][MAX];
long long parantopt(){
for(i = n; i >= 1; i--)
for(j = i; j <= n; j++){
if(i == j)
m[i][j] = 0;
else if(j == i + 1)
m[i][j] = d[i - 1] * d[i] * d[i + 1];
else{
m[i][j] = m[i][i] + m[i + 1][j] + d[i - 1] * d[i] * d[j];
for(k = i + 1; k < j; k++)
if(m[i][j] > m[i][k] + m[k + 1][j] + d[i - 1] * d[k] * d[j])
m[i][j] = m[i][k] + m[k + 1][j] + d[i - 1] * d[k] * d[j];
}
}
return m[1][n];
}
int main(){
freopen("podm.in", "r", stdin);
freopen("podm.out", "w", stdout);
scanf("%d", &n);
for(i = 0; i <= n; i++)
scanf("%lld", &d[i]);
printf("%lld\n", parantopt());
return 0;
}