Pagini recente » Cod sursa (job #2456737) | Cod sursa (job #2972306) | Cod sursa (job #73909) | Cod sursa (job #2642298) | Cod sursa (job #2023898)
#include <iostream>
#include <cstdio>
#include <climits>
using namespace std;
int vCit[505],n;
long long dp[505][505];
const long long inf=LONG_LONG_MAX;
void citire()
{
scanf("%d",&n);
for(int i=0;i<=n;i++)
scanf("%d",&vCit[i]);
}
long long minK(int a,int b)
{
long long r=inf;
for(int k=a;k<=b;k++)
{
r=min(r,dp[a][k]+dp[k+1][b+1]+vCit[a-1]*vCit[k]*vCit[b+1]);
}
return r;
}
void dinamica()
{
for(int c=2;c<=n;c++)
for(int i=1,j=c;j<=n;i++,j++)
dp[i][j]=minK(i,j-1);
}
int main()
{
freopen("podm.in","r",stdin);
freopen("podm.out","w",stdout);
citire();
dinamica();
printf("%lld",dp[1][n]);
return 0;
}