Pagini recente » Cod sursa (job #2173563) | Cod sursa (job #2172565) | Cod sursa (job #875006) | Cod sursa (job #2826369) | Cod sursa (job #1494330)
#include <stdio.h>
using namespace std;
const int MAX=500;
#define INF 1000000000000000LL
#define min(a, b) ((a) < (b) ? (a) : (b))
long long best[MAX+1][MAX+1],d[MAX];
int main()
{
freopen ("podm.in","r",stdin);
freopen ("podm.out","w",stdout);
int n;
scanf("%d",&n);
for(int i=0; i<=n; i++)
scanf("%d",&d[i]);
for(int i=1; i<=n-1; i++)
best[i][i+1]=d[i-1]*d[i]*d[i+1];
for(int i=2; i<=n-1; i++)
for(int j=1; j<=n-i; j++)
{
int x = i+j;
best[j][x]=INF;
for(int k=j;k<=x-1;k++)
best[j][x]=min(best[j][x],best[j][k]+best[k+1][x]+d[j-1]*d[k]*d[x]);
}
printf("%lld",best[1][n]);
return 0;
}