Pagini recente » Cod sursa (job #3259318) | Cod sursa (job #1693674) | Cod sursa (job #2224476) | Cod sursa (job #2887084) | Cod sursa (job #377968)
Cod sursa(job #377968)
#include <stdio.h>
#define ll long long
#define NMAX 1<<9
#define inf 2000000000
int n,d[NMAX];
ll best[NMAX][NMAX];
void read()
{
scanf("%d",&n);
int i;
for (i=1; i<=n+1; i++)
scanf("%d",&d[i]);
}
ll min(ll x,ll y)
{
return x<y ? x : y;
}
void solve()
{
int i,j,k;
for (i=1; i<n; i++)
for (j=1; j<=n-i; j++)
if (i==1)
{
best[j][j+1]=(ll)d[j]*d[j+1]*d[j+2];
}
else
{
best[j][j+i]=best[j+1][j+i]+(ll)d[j]*d[j+1]*d[j+i+1];
for (k=j; k<j+i; k++)
best[j][j+i]=min(best[j][j+i],best[j][k]+best[k+1][j+i]+(ll)d[j]*d[k+1]*d[j+i+1]);
}
}
int main()
{
freopen("podm.in","r",stdin);
freopen("podm.out","w",stdout);
read();
solve();
printf("%lld\n",best[1][n]);
return 0;
}