Pagini recente » Cod sursa (job #1884422) | Cod sursa (job #2353756) | Borderou de evaluare (job #2311704) | Cod sursa (job #3188860) | Cod sursa (job #670490)
Cod sursa(job #670490)
#include<cstdio>
const int MAX_N = 505;
const long long INF = 10000000000LL;
int n;
long long d[MAX_N];
long long dp[MAX_N][MAX_N];
long long minim(long long a,long long b)
{
if(a<b)
return a;
return b;
}
int main()
{
freopen("podm.in","r",stdin);
freopen("podm.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n+1;++i)
scanf("%lld",&d[i]);
for(int i=n;i>=1;--i)
{
for(int j=1;j<=n;++j)
{
dp[i][j] = INF;
if(i==j)
{
dp[i][j]=0;
continue;
}
if(i==j-1)
{
dp[i][j]=d[i]*d[j]*d[j+1];
continue;
}
for(int k=i;k<j;++k)
dp[i][j] = minim(dp[i][j],dp[i][k]+dp[k+1][j]+d[i]*d[k+1]*d[j+1]);
}
}
printf("%lld\n",dp[1][n]);
return 0;
}